c# - 使用输入参数调用 SSIS 包中的存储过程

标签 c# sql-server-2008 ssis

我正在从 SSIS 包调用存储过程。该存储过程具有三个输入参数,例如开始日期、结束日期和字符串变量。

我们正在从 .Net 应用程序调用 SSIS 包。因此,我们必须将参数从 C# 代码传递到 SSIS 包,后者又传递到存储过程。

我正在寻找文章和程序员来推荐我。

最佳答案

这是一个可能的解决方案。您可以在 SSIS 包中声明变量并设置存储过程以将它们用作输入变量。然后,将值从 C# 传递给变量。

这是一个例子:

在此场景中,我通过传递 C# 中的值将州和国家/地区插入表中。

  1. 在 SSIS 包上,创建三个参数 StoredProcedureCountryState
  2. 将值 EXEC dbo.InsertData @Country, @State 分配给变量 StoredProcedure。请参阅屏幕截图#1
  3. 将“执行 SQL 任务”拖放到“控制流”选项卡上。
  4. 执行 SQL 任务编辑器上,将其配置为使用 ADO.NET 连接。
  5. SQLSourceType更改为变量
  6. User::StoredProcedure分配给SourceVariable。请参阅屏幕截图#2
  7. 请参阅屏幕截图 #3 以了解参数映射部分的配置方式。
  8. 在 C# 中,您可以传递参数值,如下所示。此代码需要引用 DLL Microsoft.SQLServer.ManagedDTS
  9. 屏幕截图 #4 显示插入表中的数据。

.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SqlServer.Dts.Runtime;

namespace CS.ExecuteSSIS
{
    class Program
    {
        static void Main(string[] args)
        {
            Application app = new Application();

            Package package = app.LoadPackage(@"C:\Learn\SSIS\Learn.SSIS\Learn.SSIS\CallFromCS.dtsx", null);
            Variables vars = package.Variables;
            vars["Country"].Value = "US";
            vars["State"].Value = "California";

            DTSExecResult result = package.Execute();

            Console.WriteLine("Package Execution results: {0}", result.ToString());
        }
    }
}

存储过程dbo.InsertData:

CREATE PROCEDURE [dbo].[InsertData]
(
        @Country    NVARCHAR(50)
    ,   @State      NVARCHAR(50)        
)
AS
BEGIN
    SET NOCOUNT ON;

    INSERT INTO dbo.SSISUsingCS (Country, State) VALUES(@Country, @State)
END

希望有帮助。

屏幕截图#1:

1

屏幕截图#2:

2

屏幕截图#2:

3

屏幕截图#3:

4

关于c# - 使用输入参数调用 SSIS 包中的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6144210/

相关文章:

c# - WPF 获取 menuItem 的父项

C# : DBConnection. Open() 超时太长

C# 从字符串中读取行

sql - 在 SQL Server 2008 R2 中创建用户定义的表类型时出错

database - SQL Server 自动备份

c# - 从 C# 代码执行 SSIS 包作为 SQLAgent 作业并将参数传递给 SSIS 包

ssis - 如何导入具有自关系的表

c# - 仅在没有类时选择 HTML 节点

sql-server - 覆盖 SQL Server 中 bigint 数据类型的最大值

sql-server - 如何使用 SSIS 将 Powershell 输出加载到 SQL 表中?