Sql-Server

有什麼方法可以在沒有安裝(並執行)SSIS 的情況下導入-導出-遷移-保存-恢復維護計劃?

  • November 17, 2014

我在 Windows Server 2008 R2 上有數十個 MSSQL Server 2012 R2,在生產中具有類似的設置、配置(在虛擬機中)。也沒有安裝 SSIS。

我必須在所有數十台伺服器上同樣維護(遷移、恢復)相同的維護計劃

在此處輸入圖像描述

在沒有安裝(並執行)SQL Server 集成服務(SSIS)和數據工具(BIDS)的情況下,有什麼方法可以導入-導出-遷移-保存-恢復維護計劃?雖然我可以為他們準備一台單獨的伺服器機器

看到“在未安裝 SSIS 服務的情況下執行 SSIS 包”的答案,但仍不確定

如果您有一個有效的維護計劃,它實際上只是一個 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;PkgNamehttps://stackoverflow.com/questions/7603021/updating-deployed-ssis-package/7605044#7605044 上查看 答案

如評論中所述,如果您使用包級加密,則還需要為此添加一個參數。/encrypt file;"foo.dtsx";3;<somepass>這是按原樣呈現的,因為我不提倡使用包密碼,也沒有對其進行測試。

引用自:https://dba.stackexchange.com/questions/53289