Renomeado um SQL Server, no entanto, os planos de manutenção ainda têm nome antigo

6

Um colega renomeou um servidor SQL, no entanto, todos os planos de manutenção ainda têm referências a 'OLD_NAME' como 'Conexão de servidor local'.

As caixas de texto que contêm os nomes dos servidores para Conexões do Servidor Local estão em cinza e não podem ser alteradas

Existe uma maneira de alterar esses valores, exceto exportar todos os pacotes do SSIS, alterar no Visual Studio e adicioná-los novamente?

    
por Richard 13.07.2011 / 18:26

3 respostas

3

Como o colega renomeou o servidor? Eles seguiram esse procedimento:

link

Se não, eles precisam, O procedimento deve ser o mesmo, independentemente da versão do SQL.

    
por 13.07.2011 / 19:26
6

O link da Microsoft fornecido acima não aborda os nomes de servidor "Conexão do servidor local" nos planos de manutenção. Essas consultas permitem verificar as seqüências de conexão do plano de manutenção. Todos usam o banco de dados msdb.

(SQL 2008, também SQL 2005 se sysssispackages for alterado para sysdtspackages90)

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)

Se você examinar o packageXML e determinar que é seguro substituir todas as instâncias de OldServerName por NewServerName, isso será feito:

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'

Se necessário, você pode fazer as alterações manualmente. Você também pode destruir o pacote se não tiver cuidado.

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'
    
por 18.06.2015 / 00:13
0

Outra opção é:

  1. para exportar o pacote SSIS do plano de manutenção
  2. abra o arquivo do pacote exportado no bloco de notas
  3. substitua "nome do servidor antigo" por "novo nome do servidor" e salve a alteração
  4. renomeie o plano de manutenção existente, ou seja, o plano de manutenção antigo
  5. importe o pacote do SSIS salvo do # 3
por 02.10.2018 / 09:06