Introduction
Après avoir renommé un serveur SQL, les plans de maintenances existants échouent avec l’erreur suivante :
Réalisation
1. Lister les procédures stockées en exécutant le script suivant sur la base MSDB et récupérer la valeur “ID” :
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) |
Voici un exemple de résultat :
2. Modifier la valeur “Data Source” à l’aide du script suivant :
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 = ‘ID' |
Modifier les valeur en rouge :
- OldServerName : Ancien nom de l’instance SQL telle qu’indiquée dans la partie “Data Source” de la colonne “LocalServerConnectionString” de la requête exécutée précédemment,
- NewServerName : Nouveau nom de l’instance SQL,
- ID : GUID de la tâche planifiée à reconfigurée telle qu’indiquée dans la colonne“ID” de la requête exécutée précédemment.
Vérification
- Valider en exécutant la requête listant les procédure stockées que le nom de la nouvelle instance apparaît bien dans la partie “Data Source” de la colonne “LocalServerConnectionString”,
- Exécuter le plan de maintenance et valider qu’il s’exécute correctement.
Liens Utiles