web-dev-qa-db-ja.com

SSISをインストール(および実行)せずに保守計画をインポート、エクスポート、移行、保存、復元する方法はありますか?

Windows Server 2008 R2に数十のMSSQL Servers 2012 R2があり、同様のセットアップ、構成(仮想マシンで)が本番環境で行われています。 SSISもインストールされていません。

数十台のサーバーすべてで同じメンテナンスプランを同様に維持(移行、復元)する必要があります

enter image description here

SQL Server Integration Service(SSIS)とData Tools(BIDS)をインストール(および実行)せずに、インポート、エクスポート、移行、保存、復元の保守計画を行う方法はありますか?個別のサーバーマシンをステージングすることはできますが

見た "SSISサービスをインストールせずにSSISパッケージを実行する"への答え しかし、それでも不確か

2
Fulproof

実際のSSISパッケージである作業保守計画がある場合、その.dtsxファイルをデータベースからエクスポートして、次のファイルに再展開できます。

2008/2012の場合、これらのパッケージはmsdb.dbo.sysssispackagesに保存され、 query で確認できます

;
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-パッケージ/ 7605044#7605044

コメントで述べたように、パッケージレベルの暗号化を使用した場合は、そのためのパラメーターも追加する必要があります/encrypt file;"foo.dtsx";3;<somepass>これは、パッケージパスワードを推奨しておらず、テストもしていないため、このまま表示されます。

4
billinkc