【问题标题】:Calling storedprocedure in SSIS Package with Input Parameters使用输入参数调用 SSIS 包中的存储过程
【发布时间】:2011-05-26 19:48:35
【问题描述】:

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

我们从 .Net 应用程序调用 SSIS 包。因此,我们必须将参数从 C# 代码传递给 SSIS 包,然后再传递给 Storedprocedure。

我正在寻找可以向我推荐的文章和程序员。

【问题讨论】:

    标签: c# sql-server-2008 ssis


    【解决方案1】:

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

    这是一个例子:

    在这种情况下,我通过从 C# 传递值将州和国家/地区插入到表中。

    1. 在 SSIS 包上,创建三个参数 StoredProcedureCountryState
    2. 将值EXEC dbo.InsertData @Country, @State 分配给变量StoredProcedure。请参阅屏幕截图 #1
    3. 将执行 SQL 任务拖放到“控制流”选项卡上。
    4. 执行 SQL 任务编辑器上,将其配置为使用 ADO.NET 连接。
    5. SQLSourceType 更改为 Variable
    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:

    屏幕截图 #2:

    屏幕截图 #2:

    截图#3:

    【讨论】:

      【解决方案2】:

      查看Application objectPackage object 的信息,其中Execute(Connections, Variables, IDTSEvents, IDTSLogging, Object) method 允许传入参数。

          var app = new Application();
          Package myPackage = app.LoadFromSqlServer("myPackage", "server", "login", "password", null);
      
          Variables params = myPackage.Variables;
          params["StartDate"].Value = DateTime.Now;
          params["EndDate"].Value = DateTime.Now;
          params["StringVariable"].Value = "ooh a string";
      
          var packageResult = myPackage.Execute(null, params, null, null, null);
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-27
      • 1970-01-01
      • 2015-09-21
      • 2015-01-25
      • 2021-05-25
      • 1970-01-01
      • 2013-07-21
      • 1970-01-01
      相关资源
      最近更新 更多