Я предполагаю, что OP знает об основной копии файла, но я считаю, что их проблема в том, что у них есть пакеты, развернутые в MSDB.
Чтобы извлечь пакеты из MSDB, вы должны сначала идентифицировать где в MSDB они существуют.Для этого вы можете запросить sysssispackagefolders и sysssispackages или вы можете просто использовать мой запрос Запрос пакета SSIS
Вооруженный этим запросом, интересующий столбец - это столбец PackagePath.Соедините это с dtutil и у вас есть extract-o-matic для восстановления пакета.
Базовая форма извлечения из MSDB на localhost в текущую папку в файловой системе будет выглядеть так:.
dtutil /sourceserver localhost /SQL "Package" /copy file;.\Package.dtsx
Extract-o-matic
Выполнить этот запрос в текстовом режиме (ctr-T). Этот запрос генерирует серию вызовов dtutil, которые, в свою очередь, извлекаютПакеты служб SSIS с сервера.
;
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
-- assumes default instance and localhost
-- use serverproperty('servername') and serverproperty('instancename')
-- if you need to really make this generic
'dtutil /sourceserver localhost /SQL "'+ F.FolderPath + '\' + P.PackageName + '" /copy file;.\' + P.PackageName +'.dtsx'
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'