2016-08-04 116 views
-1

我環顧四周,還沒有發現任何與此相關的問題。在SQL Server 2016中運行SSIS 2012腳本

我在一個團隊中工作,該團隊需要在SQL Server 2012,2014和2016上運行ETL。此ETL僅在相同服務器實例內的數據庫之間移動信息,因此根本不會與外部服務器通信。我有一箇舊的,但簡單的腳本,最初是爲SSIS 2008構建的,但曾升級到SSIS 2012.當我們運行我們的配置工具來設置我們的ETL作業代理時,我可以使SSIS 2012腳本在SQL上成功運行Server 2012以及SQL Server 2014中,因爲SQL Server會自動將腳本遷移到2014年,但它無法在SQL Server 2016上配置或運行。

令我困惑的是,如果我在進入部署時,實際上打開2014和2016年轉換後的dtsx文件並進行比較時,它們之間沒有任何區別,而與SSIS 2012文件比較確實顯示出不少差異,但其中大部分都是參考更改(例如從SSIS.Package.3到Microsoft.Package)。

我們理想情況下只希望部署1個源腳本,因此我們不會嘗試在多個不同的解決方案上進行相同的更改以支持3個服務器版本。由於微軟將SSDT2016在SSIS中向後兼容到了SQL Server 2012,所以我們希望這意味着我們可以爲全部3使用相同的2012腳本。

爲什麼在2014/2016文件相同的情況下,腳本將成功遷移並在SQL Server 2014上運行,而不是在SQL Server 2016上運行? SQL Server 2016可以不像SQL Server 2014那樣轉換SSIS 2012文件嗎?

+1

沒有看到腳本,很難說。 – Gareth

+0

你想從哪個客戶端運行?該客戶與哪個服務器通話?我有一個更新的SQL服務器,我根本無法使用舊版本的SSIS。它只是在各地崩潰。 – durbnpoisn

+0

@durbnpoisn ETL腳本只是在同一服務器實例內的不同數據庫之間移動信息,因此它永遠不會與外部服務器實例交談。 – mcol2007

回答

0

原來,通過既DTS內下方所示TargetServerVersion標籤簡單地增加:在SSIS 2012項目文件目標數據的標籤,我們能夠拿到劇本遷移,並在所有3的SQL Server版本上運行:

<DTS:ObjectData> <InnerObject> <!--Preexisting tags for other parameters--> <TargetServerVersion Type="3" Value="110" /> </InnerObject> </DTS:ObjectData>

相關問題