在以前的dts中,在包的開(kāi)發(fā)、測(cè)試、發(fā)布遷移過(guò)程中有很多問(wèn)題,典型的問(wèn)題是你必須手動(dòng)的確定包中的所有連接都指向一個(gè)實(shí)際存在的物理服務(wù)器
幸運(yùn)的是,現(xiàn)在在ssis中提供了這種問(wèn)題的解決方案,那就是包配置
包配置是一個(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ù)庫(kù)的表中,并可以動(dòng)態(tài)配置數(shù)據(jù)庫(kù)的位置來(lái)源
首先開(kāi)始我們的包的建立:
假設(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
下面開(kāi)始拖曳組件到控制流面板
。一個(gè)execute sql task組件,命名為truncate destination. 其 sql 命令為 truncate table dbo.personage.
。一個(gè)數(shù)據(jù)流組件,命名為import file.
。然后把2者關(guān)聯(lián)起來(lái)

下面開(kāi)始設(shè)計(jì)【import file】數(shù)據(jù)流任務(wù)
。一個(gè) flat file connection 組件指向personage.txt文件
。一個(gè) ole db connection 組件指向存在dbo.personage表的數(shù)據(jù)庫(kù) ,然后配置列的屬性,使表跟文件對(duì)應(yīng)起來(lái)

到現(xiàn)在為止,已經(jīng)成功的建立了包
設(shè)置包配置
現(xiàn)在開(kāi)始設(shè)置包配置,這是非常簡(jiǎn)單的且具有很好的彈性
包配置使你能編輯你的包的屬性、變量、連接和你的控制流的其他屬性,需要注意的是,你不能編輯你的數(shù)據(jù)流組件的屬性
在菜單條上,單擊dts, package configurations… 或者在控制流設(shè)計(jì)面板右鍵選擇package configurations….
然后在包配置中允許包配置選擇,并單擊添加
在單擊過(guò)后出現(xiàn)一個(gè)歡迎屏幕并讓你選擇配置類型,當(dāng)前選擇xml configuration file
然后鍵入配置文件名,如c:/packageconfigurations/environment.dtsconfig,單擊下一步
然后在對(duì)象樹(shù)瀏覽中選擇connections.destination.properties的initialcatalog 和 servername屬性,然后單擊下一步
給你的配置一個(gè)名字,這樣整個(gè)過(guò)程就完成了
這樣你的包將在運(yùn)行期間獲得2個(gè)屬性的值,你打開(kāi)xml配置文件,你將看得這些你需要?jiǎng)討B(tài)改變屬性的當(dāng)前值
現(xiàn)在,你可以非常容易的遷移包到另一個(gè)新的環(huán)境,而你只須改變你的包配置文件(c:/packageconfigurations/environment.dtsconfig)即可
新聞熱點(diǎn)
疑難解答
圖片精選