在執行SSIS包時,如何動態更新變數值

2022-01-30 08:28:06 字數 2830 閱讀 9498

實現方式

若要動態更新變數,可以為變數建立配置,將這些配置部署到包中,然後在部署包時更新配置檔案中的變數值。這樣,在執行時,包就可以使用更新後的變數值。

下面通過乙個簡單的例子來說明如何實現動態更新變數值。

例子要求

把一張order表從遠端計算機例項「triy-2fe792bb5d\sql2008de」 根據需要輸入(order.dbo.name),把資料匯入到本機例項"reri-6ec5991410\sql2008de"

例子實現

建立乙個簡單的「資料流任務」,具體操作步驟這裡就略過,來看在作用域"package",建立乙個使用者定義的變數"name".資料型別為"string",值為"nr.00002"

在"ole db 源"引用變數:

待ssis包調式ok過,我們接下來就把變數配置部署到包中,在選單"ssis"找到「包配置」:

這裡設定了乙個配置型別為「sql server」的包配置。

[dbo].[ssis configurations]是表名,建立在本機例項"reri-6ec5991410\sql2008de"的「order」所在資料庫中。

create

table

[dbo].

[ssis configurations](

configurationfilter 

nvarchar

(255

) not

null

,configuredvalue 

nvarchar

(255

) null

,packagepath 

nvarchar

(255

) not

null

,configuredvaluetype 

nvarchar(20

) not

null

)[dbo].[ssis configurations]中欄位configurationfilter 儲存的是,配置篩選器的值"ordername"

下面就是設定[dbo].[ssis configurations]中configuredvalue對應ssis包變數"name "的value屬性

完成配置,我們就可以在,本機例項"reri-6ec5991410\sql2008de"的「order」所在資料庫中,查到對應的配置資料:

部署ssis包完成後,根據需要修改 [dbo].[ssis configurations]中的配置值"nr.00002",執行ssis包時候,包中變數"name"的值就會動態更新,如現在我們把"nr.00002"變成"nr.00010"

update

dbo.

[ssis configurations

]set

configuredvalue='

nr.00010

'where

configurationfilter='

ordername

'執行包後,我們可以看到包執行進度中,包呼叫上面配置的配置字串「reri-6ec5991410\sql2008de.ssis_db.sa」

這樣就實現了文章開頭的要求部分。

另,在包配置時候,配置型別也可以設定成別的型別,經常用的是xml配置檔案,樣式如下:

xml version="1.0" 

?>

- <

dtsconfiguration

>

- <

dtsconfigurationheading

>

<

dtsconfigurationfileinfo 

generatedby

="mono\andy"

generatedfrompackagename

="package"

generatedfrompackageid

=""generateddate

="2011-4-16 1:00:24"

/>

dtsconfigurationheading

>

- <

configuration 

configuredtype

="property"

path

="\package.variables[user::name].properties[value]"

valuetype

="string"

>

<

configuredvalue

>

nr.00002

configuredvalue

>

configuration

>

dtsconfiguration

>

動態呼叫SSIS包

declare cmd varchar 1000 declare sourceid int set sourceid 2 declare ssispath varchar 1000 set ssispath sql package server txchen bank maxconcurrent 1...

dtexec命令執行SSIS包

預設情況下,同時安裝了 64 位和 32 位版本的 integration services 命令提示實用工具的 64 位計算機將在命令提示符處執行 32 位版本。執行 32 位版本的原因是 在 path 環境變數中,32 位版本的目錄路徑顯示在 64 位版本的目錄路徑之前。通常,32 位目錄路徑是...

SSIS常用的包 執行任務

執行乙個任務將會執行乙個或一系列的 sql語句或儲存過程。在 ssis中還支援執行檔案中的 script。大多數的配置在下圖 圖 3 1 中呈現。停止時間 timeout選項設定任務開始執行到停止的時間。如果設定為 0以為這它將在極短的時間內執行完。圖3 1 resultset選項設定 task的輸...