?
在以前的DTS中,在包的開發(fā)、測(cè)試、發(fā)布遷移過程中有很多問題,典型的問題是你必須手動(dòng)的確定包中的所有連接都指向一個(gè)實(shí)際存在的物理服務(wù)器
幸運(yùn)的是,現(xiàn)在在SSIS中提供了這種問題的解決方案,那就是包配置
包配置是一個(gè)動(dòng)態(tài)改變你的SSIS對(duì)象和連接屬性的一種機(jī)制,它把這些動(dòng)態(tài)可以改變的信息保存在包的外部,有下面幾種方法存儲(chǔ)這些值并將其傳送到包中:
?XML文件
?環(huán)境變量
?注冊(cè)表鍵值
?父包變量
下面我們將舉例使用XML文件存儲(chǔ)這些值
這個(gè)例子我們將會(huì)把一個(gè)文本文件導(dǎo)入到數(shù)據(jù)庫的表中,并可以動(dòng)態(tài)配置數(shù)據(jù)庫的位置來源
首先開始我們的包的建立:
?假設(shè)存在一文本文件 PersonAge.txt,內(nèi)容如下:
??1,Joe Bloggs,27
??2,Mary Smith,26
??3,Fred Jones,28
?目標(biāo)表為dbo.PersonAge,使用下面代碼建立?
??CREATE TABLE [dbo].[PersonAge](
???[PersonAgeKey] [int] NULL,
???[Person] [varchar](35) NULL,
???[PersonAge] [int] NULL
??) ON [PRIMARY]
??GO
?下面開始拖曳組件到控制流面板
???。一個(gè)Execute SQL task組件,命名為Truncate destination. 其 SQL 命令為 TRUNCATE TABLE dbo.PersonAge.
???。一個(gè)數(shù)據(jù)流組件,命名為Import File.
???。然后把2者關(guān)聯(lián)起來
?
???
?
??下面開始設(shè)計(jì)【Import File】數(shù)據(jù)流任務(wù)
???。一個(gè) Flat File connection 組件指向PersonAge.txt文件
???。一個(gè) OLE DB Connection 組件指向存在dbo.PersonAge表的數(shù)據(jù)庫 ,然后配置列的屬性,使表跟文件對(duì)應(yīng)起來
??????
???
??
??到現(xiàn)在為止,已經(jīng)成功的建立了包
設(shè)置包配置
??現(xiàn)在開始設(shè)置包配置,這是非常簡(jiǎn)單的且具有很好的彈性
??包配置使你能編輯你的包的屬性、變量、連接和你的控制流的其他屬性,需要注意的是,你不能編輯你的數(shù)據(jù)流組件的屬性
??
??在菜單條上,單擊DTS, Package Configurations… 或者在控制流設(shè)計(jì)面板右鍵選擇Package Configurations….
??然后在包配置中允許包配置選擇,并單擊添加
??在單擊過后出現(xiàn)一個(gè)歡迎屏幕并讓你選擇配置類型,當(dāng)前選擇XML Configuration File
??然后鍵入配置文件名,如C:\PackageConfigurations\Environment.dtsConfig,單擊下一步
??然后在對(duì)象樹瀏覽中選擇Connections.Destination.Properties的InitialCatalog 和 ServerName屬性,然后單擊下一步
??給你的配置一個(gè)名字,這樣整個(gè)過程就完成了
??
這樣你的包將在運(yùn)行期間獲得2個(gè)屬性的值,你打開XML配置文件,你將看得這些你需要?jiǎng)討B(tài)改變屬性的當(dāng)前值??
現(xiàn)在,你可以非常容易的遷移包到另一個(gè)新的環(huán)境,而你只須改變你的包配置文件(C:\PackageConfigurations\Environment.dtsConfig)即可