[英]Executing an SSIS package with SQL query in C#
因此,我想通过 C# 中的 SQL 查询执行 SSIS package。
我尽可能地简化了它,所以缺少一些代码。
我的主要方法如下所示:
private static void Main(string[] args)
{
ExecuteSSIS("SSISPACKAGE.dtsx");
}
然后我们有带有连接字符串的 ExecuteSSIS 方法
private static string SSISDB = "Data source=.; Initial Catalog=SSISDB; Integrated Security=SSPI;";
public static void ExecuteSSIS(string PackageName)
{
string executeLoad = @"
DECLARE @execution_id BIGINT
EXEC [SSISDB].[catalog].[create_execution] @package_name=N'@packageName'
,@execution_id = @execution_id OUTPUT
,@folder_name = N'CorrectFolderName'
,@project_name = N'CorrectProjectName'
,@use32bitruntime = False
,@reference_id = NULL
SELECT @execution_id
DECLARE @var0 SMALLINT = 1
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id
,@object_type = 50
,@parameter_name = N'LOGGING_LEVEL'
,@parameter_value = @var0
EXEC [SSISDB].[catalog].[start_execution] @execution_id";
using (SqlConnection connection = new SqlConnection(SSISDB))
{
try
{
SqlCommand sqlCommand = new SqlCommand(executeLoad, connection);
sqlCommand.Parameters.AddWithValue("@packageName", PackageName);
sqlCommand.Connection.Open();
sqlCommand.ExecuteNonQuery();
sqlCommand.Connection.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
SQL 查询本身工作正常,但是当我尝试运行该程序时出现错误
“无法访问 package 或 package 不存在。验证 package 是否存在以及用户是否有权访问它。”
我快要发疯了,想找出原因。
哇好吧,所以我修好了。 原来是一个简单的错误/遗漏。
EXEC [SSISDB].[catalog].[create_execution] @package_name=N'@packageName'
似乎 C# 无法插入/找到参数@packagename,而它位于“” (撇号)内所以当我将其更改为
EXEC [SSISDB].[catalog].[create_execution] @package_name= @packageName
它按预期工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.