2009-09-14 32 views
2

根據示例here from MSDN,如果通過「sp_start_job」過程調用包,如何提供SSIS包級別變量?使用SQL Server代理以編程方式在服務器上運行遠程SSIS包

下面是從MSDN示例代碼:

Dim jobConnection As SqlConnection 
Dim jobCommand As SqlCommand 
Dim jobReturnValue As SqlParameter 
Dim jobParameter As SqlParameter 
Dim jobResult As Integer 

jobConnection = New SqlConnection("Data Source=(local);Initial Catalog=msdb;Integrated Security=SSPI") 
jobCommand = New SqlCommand("sp_start_job", jobConnection) 
jobCommand.CommandType = CommandType.StoredProcedure 

jobReturnValue = New SqlParameter("@RETURN_VALUE", SqlDbType.Int) 
jobReturnValue.Direction = ParameterDirection.ReturnValue 
jobCommand.Parameters.Add(jobReturnValue) 

jobParameter = New SqlParameter("@job_name", SqlDbType.VarChar) 
jobParameter.Direction = ParameterDirection.Input 
jobCommand.Parameters.Add(jobParameter) 
jobParameter.Value = "RunSSISPackage" 

jobConnection.Open() 
jobCommand.ExecuteNonQuery() 
jobResult = DirectCast(jobCommand.Parameters("@RETURN_VALUE").Value, Integer) 
jobConnection.Close() 

Select Case jobResult 
    Case 0 
    Console.WriteLine("SQL Server Agent job, RunSISSPackage, started successfully.") 
    Case Else 
    Console.WriteLine("SQL Server Agent job, RunSISSPackage, failed to start.") 
End Select 
Console.Read() 

我如何可以提供值,命名爲「RunSSISPackage」 SSIS包中的變量?

回答

2

你可以創建一個表像一個隊列,在那裏你插入一行包含您的參數,然後開始工作。在運行的TSQL內,只需選擇這些值並將隊列行標記爲「C」,或者只需將其刪除即可。

編輯

嘗試尋找Running SSIS package programmatically涵蓋了所有下面的方法:以編程方式使用SSIS對象模型

  • 開始DTEXEC.EXE過程

    • 運行包。 DTEXEC是用於執行SSIS包的命令行實用程序
    • 使用SQL代理。您可以配置一個代理作業來運行你的包
    • 使用一些其他實用程序來啓動DTEXEC你
    • 創建將運行包
  • +0

    我的包使用動態連接字符串。我如何通過表查詢在我的包中設置這些值? – D3vtr0n 2009-09-14 19:23:17

    +0

    所以你的一個參數是連接信息? – 2009-09-14 19:47:35

    +0

    是的,所有參數都是動態訪問目標文件的連接信息。用戶可以選擇任何文件夾來傳輸這些數據。對於我的SSIS包來說,它需要提供這些參數。有任何想法嗎? – D3vtr0n 2009-09-14 21:30:21

    0

    我們在運行時動態通過改變我們的變量值自定義應用程序使用配置表或配置文件。我們不讓用戶運行我們的SSIS包,但是我認爲你的工作可以有一個步驟,首先更新配置文件,然後運行包。