2011-05-26 54 views
1

我正在從SSIS包調用StoredProcedure。該存儲過程具有三個輸入參數,如開始日期,結束日期和字符串變量。使用輸入參數在SSIS包中調用storedprocedure

我們從.Net應用程序調用SSIS包。因此,我們必須將參數從C#代碼傳遞給SSIS包,然後傳遞給StoredProcedure。

我正在尋找文章和編碼器來暗示我。

+0

不,從C#語法 – goofyui 2011-05-26 20:09:03

回答

3

這是一個可能的解決方案。您可以在SSIS包中聲明變量,並將存儲過程設置爲使用它們作爲輸入變量。然後,將值傳遞給C#中的變量。

下面是一個例子:

在這種情況下,我插入狀態和國家通過從C#傳遞值到一個表。

  1. 在SSIS包,創建三個參數StoredProcedureCountryState
  2. 將值EXEC dbo.InsertData @Country, @State分配給變量StoredProcedure。請參閱屏幕截圖#。
  3. 將執行SQL任務拖放到控制流選項卡上。
  4. 執行SQL任務編輯器,將其配置爲使用ADO.NET連接。
  5. 更改SQLSourceTypeVariable
  6. 指定User::StoredProcedureSourceVariable。請參閱屏幕截圖#。
  7. 請參閱屏幕截圖#瞭解參數映射部分的配置方式。
  8. 在C#中,您可以傳遞參數值,如下所示。此代碼需要參考DLL Microsoft.SQLServer.ManagedDTS
  9. 屏幕截圖#顯示插入到表中的數據。

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

0

請參閱有關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); 
+0

剛剛發現這個鏈接,並與此嘗試.. http://geekswithblogs.net/stun/archive/2009/ 3月5日/映射-存儲過程參數合SSIS-OLE-DB-源editor.aspx – goofyui 2011-05-26 20:45:54