gpt4 book ai didi

c# - 从 Entity Framework 调用时出现存储过程错误

转载 作者:太空宇宙 更新时间:2023-11-03 22:54:02 25 4
gpt4 key购买 nike

我正在尝试构建一个将运行我的存储过程的简单项目。

当我通过 SQL-Server 执行 SP 时,它工作正常:

EXECUTE RunSSISPackage1        
@folder_name1 = N'SSIS projects',
@project_name1=N'CalculateReports',
@package_name1=N'CalculateReports.dtsx',
@param1 = N'2017-04-01 00:00:00',
@param1name = N'startDate'

我的 Controller :

public IActionResult Test()
{
using (var cmd = _context.Database.GetDbConnection().CreateCommand())
{
cmd.CommandText = "RunSSISPackage";
cmd.CommandType = CommandType.StoredProcedure;
// set some parameters of the stored procedure
cmd.Parameters.Add(new SqlParameter("@package_name1", SqlDbType.NVarChar)
{
Value = "N'CalculateReports.dtsx'"
});
cmd.Parameters.Add(new SqlParameter("@folder_name1", SqlDbType.NVarChar)
{
Value = "N'SSIS projects'"
});
cmd.Parameters.Add(new SqlParameter("@project_name1", SqlDbType.NVarChar)
{
Value = "N'CalculateReports.dtsx'"
});
cmd.Parameters.Add(new SqlParameter("@param1", SqlDbType.NVarChar)
{
Value = "N'2017-04-01 00:00:00'"
});
cmd.Parameters.Add(new SqlParameter("@param1name", SqlDbType.NVarChar)
{
Value = "N'startDate'"
});
if (cmd.Connection.State != ConnectionState.Open)
cmd.Connection.Open();

cmd.ExecuteNonQuery();

return View();
}
}

我收到一个错误:

Cannot access the package or the package does not exist. Verify that the package exists and that the user has permissions to it.

package_name\folder_name\project_name 的参数发送不正确时会出现此错误。

如何将前缀值作为参数传递?

最佳答案

您的代码中不需要 N'...' 换行,这只是 SQL Server 用于 unicode 转换的事情。例如,参见 this .因此,当您这样做时,您实际上传递的是 N'CalculateReports.dtsx' 的包名称,这显然不存在。

相反,执行此 Value = "CalculateReports.dtsx",例如:

cmd.Parameters.Add(new SqlParameter("@package_name1", SqlDbType.NVarChar)
{
Value = "CalculateReports.dtsx"
});
cmd.Parameters.Add(new SqlParameter("@folder_name1", SqlDbType.NVarChar)
{
Value = "SSIS projects"
});
cmd.Parameters.Add(new SqlParameter("@project_name1", SqlDbType.NVarChar)
{
Value = "CalculateReports.dtsx"
});
cmd.Parameters.Add(new SqlParameter("@param1", SqlDbType.NVarChar)
{
Value = "2017-04-01 00:00:00"
});
cmd.Parameters.Add(new SqlParameter("@param1name", SqlDbType.NVarChar)
{
Value = "startDate"
});

关于c# - 从 Entity Framework 调用时出现存储过程错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46303564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com