Bien qu’incomplets en termes de fonctionnalités par rapport à une procédure stockée qui ferait la même chose, les plans de maintenance s’avèrent très simple à développer et à déployer dans un temps court. Je pense notamment à l’impossibilité de compresser des sauvegardes sous SQL Server 2008.
Comme beaucoup de choses effectuées à l’aide des interfaces graphiques proposées par SQL Server Management Studio, les effets produits par l’exécution d’une tâche ne sont pas toujours détaillés. Le propriétaire d’un plan de maintenance n’y échappe pas et est écrasé à chaque modification du plan.
Voici donc comment le trouver, et le changer.
Voici la requête qui permet de trouver le propriétaire de tous les plans de maintenance, avec quelques détails :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | ------------------------------- -- Nicolas Souquet - 27/11/2011 ------------------------------- SELECT P.name AS SSIS_package_name , P.createdate , P.ownersid , SP.name AS owner_name , CASE P.packagetype WHEN 0 THEN 'Default' WHEN 1 THEN 'SQL Server Import and Export Wizard' WHEN 2 THEN 'DTS Designer in SQL Server 2000' WHEN 3 THEN 'SQL Server Replication' WHEN 5 THEN 'SSIS Designer' WHEN 6 THEN 'Maintenance Plan Designer or Wizard' END AS packagetype FROM msdb.dbo.sysssispackages AS P INNER JOIN sys.server_principals AS SP ON P.ownersid = SP.sid --WHERE P.name = 'monPlanDeMaintenance' |
En dé-commentant la clause WHERE de cette requête, on peut trouver le propriétaire d’un plan de maintenance particulier.
Dès lors on peut changer le propriétaire d’un plan de maintenance particulier à l’aide de la requête suivante :
1 2 3 4 5 6 7 8 9 | ------------------------------- -- Nicolas Souquet - 27/11/2011 ------------------------------- UPDATE msdb.dbo.sysssispackages SET ownersid = SP.sid FROM msdb.dbo.sysssispackages AS P CROSS JOIN sys.server_principals AS SP WHERE P.name = 'monPlanDeMaintenance' AND SP.name = 'nomDeLoginDuNouveauPropriétaire' |
Ceci fonctionne sous réserve que nomDeLoginDuNouveauPropriétaire et monPlanDeMaintenance existent
Et c’est malheureusement à effectuer après chaque modification du plan de maintenance si le login qui le modifie n’est pas celui qui l’exécute !
Bons plans de maintenance
ElSüket