Sql-Server
有什麼方法可以在沒有安裝(並執行)SSIS 的情況下導入-導出-遷移-保存-恢復維護計劃?
我在 Windows Server 2008 R2 上有數十個 MSSQL Server 2012 R2,在生產中具有類似的設置、配置(在虛擬機中)。也沒有安裝 SSIS。
我必須在所有數十台伺服器上同樣維護(遷移、恢復)相同的維護計劃
在沒有安裝(並執行)SQL Server 集成服務(SSIS)和數據工具(BIDS)的情況下,有什麼方法可以導入-導出-遷移-保存-恢復維護計劃?雖然我可以為他們準備一台單獨的伺服器機器
如果您有一個有效的維護計劃,它實際上只是一個 SSIS 包,您可以將該 .dtsx 文件從數據庫中導出並重新部署到下一個。
對於 2008/2012,這些包儲存在 msdb.dbo.sysssispackages 中,您可以通過查詢進行驗證
; WITH FOLDERS AS ( -- Capture root node SELECT cast(PF.foldername AS varchar(max)) AS FolderPath , PF.folderid , PF.parentfolderid , PF.foldername FROM msdb.dbo.sysssispackagefolders PF WHERE PF.parentfolderid IS NULL -- build recursive hierarchy UNION ALL SELECT cast(F.FolderPath + '\' + PF.foldername AS varchar(max)) AS FolderPath , PF.folderid , PF.parentfolderid , PF.foldername FROM msdb.dbo.sysssispackagefolders PF INNER JOIN FOLDERS F ON F.folderid = PF.parentfolderid ) , PACKAGES AS ( -- pull information about stored SSIS packages SELECT P.name AS PackageName , P.id AS PackageId , P.description as PackageDescription , P.folderid , P.packageFormat , P.packageType , P.vermajor , P.verminor , P.verbuild , suser_sname(P.ownersid) AS ownername FROM msdb.dbo.sysssispackages P ) SELECT F.FolderPath , P.PackageName , F.FolderPath + '\' + P.PackageName AS PackagePath , P.packageFormat , P.packageType , P.vermajor , P.verminor , P.verbuild , P.ownername , P.PackageId FROM FOLDERS F INNER JOIN PACKAGES P ON P.folderid = F.folderid -- uncomment this if you want to filter out the -- native Data Collector packages WHERE F.FolderPath <> '\Data Collector';
然後,您將希望將該資訊傳遞給重複的 dtutil 呼叫,就像我在此SSIS Package Extract From msdb中所描述的那樣。
/file
但是,您不想輸出,而是希望在/destserver thatdatabase /copy SQL;PkgName
https://stackoverflow.com/questions/7603021/updating-deployed-ssis-package/7605044#7605044 上查看 答案如評論中所述,如果您使用包級加密,則還需要為此添加一個參數。
/encrypt file;"foo.dtsx";3;<somepass>
這是按原樣呈現的,因為我不提倡使用包密碼,也沒有對其進行測試。