一位同事已经重新命名了一个SQL服务器,但是所有的维护计划仍然将“OLD_NAME”引用为“本地服务器连接”。
包含本地服务器连接的服务器名称的文本框呈灰色,无法更改
有没有办法改变这些值,出口所有的SSIS包,在Visual Studio中更改并重新添加它们呢?
同事如何重命名服务器? 他们是否遵循这个程序:
http://msdn.microsoft.com/en-us/library/ms143799.aspx
如果没有,他们需要,程序应该是相同的,不pipeSQL版本。
上面给出的Microsoft链接不能解决维护计划中的“本地服务器连接”服务器名称。 这些查询让您检查维护计划连接string。 全部使用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)
(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)
如果您检查packageXML并确定将NewServerName的每个实例replace为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'
如有必要,您可以手动进行更改。 如果你不小心,你也可以销毁包装。
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'