K09*_*K09 2 sql-server migration ssis sql-server-2008-r2
我在 SQL Server 2008R2 上的 MSDB SSIS 上的许多文件夹中有许多 SSIS 包。我们正在迁移到新的服务器主机,但仍保留在 SQL Server 2008R2 上。
如何将这些 SSIS 包复制/迁移到新服务器?Dtutil 是最佳选择吗?
是的,DTutil 仍然是最好的选择。我有一篇关于如何使用 dtutil + 包表中的数据生成导出到磁盘的调用的帖子,MSDB 中的 SSIS 包提取。代替file
目标,您将替换源服务器。如果您使用文件夹来组织您的包,那么您需要事先创建它们。
脚本张贴在这里供后代使用。这适用于使用包部署模型的 2008+ 包或 2012/2014 包。随着2005年,sysssispackagefolder
将被替换sysdtspackages90
,并sysssispackagefolders
用sysdtspackagefolders90
;
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
-- File extraction command line
'dtutil /sourceserver localhost /SQL "'+ F.FolderPath + '\' + P.PackageName + '" /copy file;".\' + P.PackageName +'.dtsx"' AS cmd
-- Move Package command line
-- 'dtutil /SQL "'+ F.FolderPath + '\' + P.PackageName + '" /SOURCEUSER srcUserName /SOURCEPASSWORD $Hj45jhd@X /DestServer <servername> /MOVE SQL;"'+ F.FolderPath + '\' + P.PackageName + '" /DESTUSER destUserName /DESTPASSWORD !38dsFH@v' AS cmd
FROM
FOLDERS F
INNER JOIN
PACKAGES P
ON P.folderid = F.folderid
WHERE
F.FolderPath <> '\Data Collector'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13132 次 |
最近记录: |