[SCCM] Le déplacement de la base de données du site génère un arrêt du service

Bonjour à tous,

J’ai rencontré ce jour un problème suite au déplacement d’une base de données SCCM vers un nouveau volume.
Suite au déplacement, la console SCCM ne se lance plus. En ouvrant le fichier SMSPROV.log sur le serveur SCCM on peut constater les messages d’erreur suivants :

*** *** Unknown SQL Error! SMS Provider 14-03-2012 07:56:47 2016 (0x07E0)
*~*~*** Unknown SQL Error! ThreadID : 2016 ,  DbError: 50000  , Sev: 16~*~* SMS Provider 14-03-2012 07:56:47 2016 (0x07E0)
*** [24000][0][Microsoft][SQL Server Native Client 10.0]Invalid cursor state SMS Provider 14-03-2012 07:56:48 2016 (0x07E0)
*~*~[24000][0][Microsoft][SQL Server Native Client 10.0]Invalid cursor state *** Unknown SQL Error! ThreadID : 2016 ,
DbError: 0 , Sev: 0~*~* SMS Provider 14-03-2012 07:56:48 2016 (0x07E0)

Cette erreur est une erreur connue depuis SCCM … 2012. Le lien suivant la décrit.

La procédure de résolution décrite dans l’article fonctionne … une fois qu’on y ajoute quelques précautions qui vous économiserons quelques heures de debug.

Voici donc la procédure complétée par mon expérience :

  1. Arrêter les services SCCM :
      1. Arrêter le service SMS_EXECUTIVE
      2. Arrêter le service SMS_NOTIFICATION_SERVER
      3. Arrêter le service SMS_SITE_COMPONENT_MANAGER
  2. Détacher la base de données SCCM
    1. Ouvrez l’outil SQL Server Management Studio
    2. Sélectionnez la base de données SCCM (par défaut CM_<Sitecode>)
    3. cliquez-droit sur la base puis sélectionnez « Tâches » puis « Détacher »
      1. Veillez à sélectionner l’option « Supprimer les connexions« 
  3. Déplacer (ou copier) les fichiers de la base de données SCCM dans leur nouvel emplacement
  4. Attacher la base de données à l’instance SQL Server
    1. Ouvrez l’outil SQL Server Management Studio
    2. Cliquez-droit sur le nœud Base de données puis sélectionnez l’action Joindre
    3. Sélectionnez le fichier .mdf situé dans son nouvel emplacement puis cliquez sur OK
  5. Modifiez le propriétaire de la base de données :
    1. Ouvrez l’outil SQL Server Management Studio
    2. Lancez une nouvelle requête puis tapez la requête suivante, en vous assurant au préalable de remplacer <YourDatabaseName> avec le nom de la base en question :
      ALTER AUTHORIZATION ON DATABASE::<YourDatabaseName> TO sa 
  6. Modifiez la propriété TRUSTWORTHY de la base de données comme suit :
     ALTER DATABASE <YourDatabaseName> SET TRUSTWORTHY ON;
  7. Assurez-vous que la valeur de niveau d’isolement est définie à READ_COMMITTED_SNAPSHOT :
    1. Exécutez la commande suivante pour obtenir la valeur actuelle :
       DBCC USEROPTIONS
    2. Si la valeur de niveau d’isolement est différente de « Lecture de capture instantanée validée », exécutez suivant les commandes dans l’ordre indiqué :
      ALTER DATABASE <YourDatabaseName>
      
       SET ALLOW_SNAPSHOT_ISOLATION ON
      
      ALTER DATABASE <YourDatabaseName>
      
       SET READ_COMMITTED_SNAPSHOT ON
  8. Relancer les services suivants :
    1. SMS_EXECUTIVE
    2. SMS_NOTIFICATION_SERVER
    3. SMS_SITE_COMPONENT_MANAGER

 

Vous pourrez vérifier le résultat de l’opération en lançant la console d’administration SCCM.

 

Enjoy 😉

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. Apprenez comment les données de vos commentaires sont utilisées.