使用C#

时间:2015-08-31 11:23:07

标签: c# ssis

我正试图从C#触发DTS包但到目前为止没有运气。 我有一个DTS包,我重写了一些参数FolderImportSource和FolderImportCompleted。 我的想法就像是

                 RunDtsPackage("DTSX NAME", new Dictionary<string, object> {
                 { "FolderImportSource", @"C:\SourceFiles\ReadyToProcess\" },
                 { "FolderImportCompleted", @"C:\SourceFiles\Processed\" },
                 { "FolderExportTarget", @"C:\TargetFiles\Output\" }

RunDtsPackage应该在SSISDB数据库上执行以下存储过程:

  • create_execution
  • set_execution_parameter_value
  • start_execution

我已经检查了this msdn link,在那里我找到了如何使用显示的“提示”调用这些过程的示例

有什么想法吗?

谢谢

1 个答案:

答案 0 :(得分:0)

[假设SQL 2014]

如果您可以访问数据库本身,则可以通过T-SQL查询直接执行包,如下所示:

Declare @execution_id bigint
EXEC [SSISDB].[catalog].[create_execution] @package_name=N'PackageName.dtsx', @execution_id=@execution_id OUTPUT, @folder_name=N'YourSSISFirstFolderName', @project_name=N'YourSSISProjectName', @use32bitruntime=False, @reference_id=Null
Select @execution_id

DECLARE @var0 sql_variant = N'SomeVariableValue'
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id,  @object_type=20, @parameter_name=N'SomePackageParameterName', @parameter_value=@var0

DECLARE @var1 smallint = 1
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id,  @object_type=50, @parameter_name=N'LOGGING_LEVEL', @parameter_value=@var1
EXEC [SSISDB].[catalog].[start_execution] @execution_id
GO

对于任何SSIS包,您都可以通过SQL Server Management Studio生成脚本,如上所示。

查看对象资源管理器时:

数据库 - &gt; Integration Services目录 - &gt; SSISDB - &gt; [GenericProjectName] - &gt;项目 - &gt; [SomeSSISProjectName] - &gt;包裹 - &gt; [包裹名字]。

从那里,右键单击该包并选择&#34;执行&#34;。填写&#34;参数&#34;下的必填字段。选项卡,然后查看顶部&#34;脚本&#34;并从下拉菜单中选择新查询编辑器窗口&#34;。这应该弹出特定于您的包和参数的T-SQL查询。

希望有所帮助或提出其他想法。