Sql-Server
SSMS 2017 在部署期間更改 SSIS 包版本
採取的步驟,可以重現:
- 在 SSDT 2012 中開發 SSIS 包,項目部署模型。
- 將項目部署到伺服器 A,SQL Server 2012。包版本 internal.packages 為 6。
- 將項目從伺服器 A 部署到伺服器 B,SQL Server 2012。包版本 internal.packages 在伺服器 B 上為 8。
如果我從 SSDT 2012 直接部署到兩台伺服器沒有問題,但從 SSMS 2017 部署會增加版本號。
有沒有辦法在 SSMS 2017 項目部署期間阻止這種情況發生?有人遇到過這種情況麼?
我並不感到驚訝,但我自己沒有測試過。
項目部署模型包是使用 ISDeploymentWizard.exe 部署的,並且每個版本的 SQL Server 都有一個版本關聯(並且有點複雜)。例如,這裡的一台筆記型電腦安裝了 VS 2013/2015 和 SSDT for 2012/2014/2016。如果我尋找那個執行檔,我會看到
- C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn\ISDeploymentWizard.exe
- C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\ISDeploymentWizard.exe
- C:\Program Files (x86)\Microsoft SQL Server\140\DTS\Binn\ISDeploymentWizard.exe
- C:\Program Files\Microsoft SQL Server\120\DTS\Binn\ISDeploymentWizard.exe
我的新機器只有 2017 年的位,看起來像
- C:\Program Files (x86)\Microsoft SQL Server\140\DTS\Binn\ISDeploymentWizard.exe
- C:\Program Files\Microsoft SQL Server\140\DTS\Binn\ISDeploymentWizard.exe
考慮到這一切的另一件事是,使用較新版本的 SSIS 工具(ISDeploymentWizard、dtexec、dtutil)將很高興地將您的版本向前滾動以匹配其版本。這對於作為顧問來升級事物很有幫助,但是當您想使用新工具來處理舊程式碼時,這就是魔鬼。
我的猜測是 SSMS 預設為不在 120 文件夾中的 ISDeploymentWizard。不幸的是,我在部署嚮導中沒有看到用於解決版本的參數。
/Silent[+|-] Default value:'-' (short form /S) /SourceType:{File|Server} Default value:'File' (short form /ST) /ModelType:{Project|Package} Default value:'Project' (short form /MT) /SourcePath:<string> (short form /SP) /SourceServer:<string> (short form /SS) /Packages:<string> (short form /PK) /ProjectPassword:<string> (short form /PP) /DestinationServer:<string> (short form /DS) /DestinationPath:<string> (short form /DP) /SkipSource[+|-] Default value:'-' @<file> Read response file for more options
你最好的,但令人討厭的,賭注是
- 保留一份用於部署的 SQL Server 2012 的 SSMS 副本
- 從 SSDT 2012 部署
- 從顯式定義源 exe 的命令行部署
最後一個選項實際上是那麼糟糕。使用 GUI 點擊部署,但在此螢幕上,停止
該突出顯示的框是可選擇/可複制的。去做。已為您建構了命令行部署(不包括“命令行:”部分)
因此你會有類似的東西
"C:\...\1XX\DTS\BINN\ISDeploymentWizard.exe" /SILENT /SourcePath:"C:\MyProject.ispac" /DestinationServer:"localhost" /DestinationPath:"/SSISDB/Folder/Project/MyProject"