一位同事已重命名 SQL 服务器,但所有维护计划仍将“OLD_NAME”引用为“本地服务器连接”。
包含本地服务器连接的服务器名称的文本框呈灰色显示且无法更改
有没有办法更改这些值,而不是导出所有 SSIS 包,在 Visual Studio 中更改并再次重新添加它们?
小智 7
上面给出的 Microsoft 链接没有解决维护计划中的“本地服务器连接”服务器名称。这些查询使您可以检查维护计划连接字符串。全部使用msdb数据库。
(SQL 2008,如果 sysssispackages 更改为 sysdtspackages90,则也是 SQL 2005)
SELECT x.*,
LocalServerConnectionString = cm.n.value('declare namespace DTS="www.microsoft.com/SqlServer/Dts";(DTS:ObjectData/DTS:ConnectionManager/DTS:Property[@DTS:Name="ConnectionString"])[1]', 'varchar(1000)')
FROM (
SELECT id, name, packageXML = CAST(CAST(packagedata AS VARBINARY(MAX)) AS XML)
FROM dbo.sysssispackages
WHERE id IN (SELECT id FROM dbo.sysmaintplan_plans)
) x
CROSS APPLY packageXML.nodes('declare namespace DTS="www.microsoft.com/SqlServer/Dts";/DTS:Executable/DTS:ConnectionManager[DTS:Property[@DTS:Name="ObjectName"]="Local server connection"]') cm(n)
Run Code Online (Sandbox Code Playgroud)
(SQL 2012)
SELECT x.*,
LocalServerConnectionString = cm.value('declare namespace DTS="www.microsoft.com/SqlServer/Dts";DTS:ObjectData[1]/DTS:ConnectionManager[1]/@DTS:ConnectionString', 'varchar(1000)')
FROM (
SELECT id, name, packageXML = CAST(CAST(packagedata AS VARBINARY(MAX)) AS XML)
FROM dbo.sysssispackages
WHERE id IN (SELECT id FROM dbo.sysmaintplan_plans)
) x
CROSS APPLY packageXML.nodes('declare namespace DTS="www.microsoft.com/SqlServer/Dts";/DTS:Executable/DTS:ConnectionManagers/DTS:ConnectionManager[@DTS:ObjectName="Local server connection"]') p(cm)
Run Code Online (Sandbox Code Playgroud)
如果您检查 packageXML 并确定将 OldServerName 的每个实例替换为 NewServerName 是安全的,则可以这样做:
UPDATE dbo.sysssispackages SET packagedata = CAST(CAST(REPLACE(CAST(CAST(packagedata AS VARBINARY(MAX)) AS VARCHAR(MAX)), 'OldServerName', 'NewServerName') AS XML) AS VARBINARY(MAX))
WHERE id = 'package GUID'
Run Code Online (Sandbox Code Playgroud)
如有必要,您可以手动进行更改。如果您不小心,您也可能会破坏包裹。
DECLARE @packageXML XML;
SET @packageXML = 'Copy and paste the packageXML data, then edit it manually';
UPDATE dbo.sysssispackages SET packagedata = CAST(@packageXML AS VARBINARY(MAX))
WHERE id = 'package GUID'
Run Code Online (Sandbox Code Playgroud)
同事是如何重命名服务器的?他们是否遵循以下程序:
http://msdn.microsoft.com/en-us/library/ms143799.aspx
如果没有,他们需要,无论 SQL 版本如何,过程都应该相同。
| 归档时间: |
|
| 查看次数: |
8455 次 |
| 最近记录: |