私はストアドプロシージャを実行する簡単なプロジェクトを構築しようとしています。Entity Frameworkから呼び出されたときのストアドプロシージャエラー
私はそれが正常に動作します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'
マイコントローラ:
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();
}
}
を私はエラーを取得しています:
はアクセスできません。パッケージが存在しません。パッケージが存在し、そのパッケージにアクセス許可があることを確認します。
このエラーは、package_name\folder_name\project_name
のパラメータが正しく送信されない場合に発生します。
接頭辞の値をパラメータとして渡すにはどうすればよいですか?
をあなたは 'Nを必要としない「...」'それはUnicodeの変換のためにのみ、SQL Serverのことだ、あなたのコードでラップします。代わりに、これを行う: 'Value =" CalculateReports.dtsx "' – DavidG
まだ動作しない..同じエラーが表示される@DavidG – sagi
そしてあなたはあなたのパラメータから 'N '...''を削除しましたか? – DavidG