Ich versuche ein einfaches Projekt zu erstellen, das meine gespeicherte Prozedur ausführt.Stored Procedure-Fehler beim Aufruf von Entity Framework
Wenn ich die SP über SQL-Server ausführen es funktioniert gut:
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'
Mein 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();
}
}
Ich erhalte eine Fehlermeldung:
Kein Zugriff auf die Paket oder das Paket existiert nicht. Stellen Sie sicher, dass das Paket vorhanden ist und dass der Benutzer über Berechtigungen verfügt.
Dieser Fehler tritt auf, wenn der Parameter package_name\folder_name\project_name
nicht korrekt gesendet wird.
Wie kann ich Präfixwerte als Parameter übergeben?
Sie den 'N nicht brauchen '...'' wickeln in Ihrem Code, das ist nur ein SQL-Server, was für Unicode-Konvertierung. Stattdessen tun Sie dies: "Value =" CalculateReports.dtsx "' – DavidG
Funktioniert immer noch nicht .. der gleiche Fehler erscheint @DavidG – sagi
Und Sie haben die 'N '...' von * all * Ihren Parametern entfernt? – DavidG