Reconstruire des bases de données système

S’applique à :SQL Server

Les bases de données système doivent être reconstruites pour résoudre les problèmes d’altération dans les bases de données master, modèle, msdb ou système de ressources , ou pour modifier le classement au niveau du serveur par défaut. Cet article fournit des instructions pas à pas pour reconstruire des bases de données système dans SQL Server.

Limitations et restrictions

Lorsque les masterbases de données , modelet msdbtempdb les bases de données système sont reconstruites, les bases de données sont supprimées et recréées à leur emplacement d’origine. Si un nouveau classement est spécifié dans l'instruction de reconstruction, les bases de données système sont créées à l'aide de ce paramètre de classement. Les modifications apportées par les utilisateurs à ces bases de données sont perdues. Par exemple, vous pouvez avoir des objets définis par l’utilisateur dans la master base de données, des travaux planifiés dans msdbou des modifications apportées aux paramètres de base de données par défaut dans la model base de données.

Prerequisites

Avant de reconstruire les bases de données système, effectuez les tâches suivantes pour être certain de pouvoir restaurer les bases de données système avec leurs paramètres actuels.

  1. Enregistrez toutes les valeurs de configuration à l'échelle du serveur.

    SELECT * FROM sys.configurations;
    
  2. Enregistrez tous les correctifs logiciels appliqués à l’instance de SQL Server et au classement actuel. Vous devez réappliquer ces correctifs logiciels après avoir reconstruit les bases de données système.

    SELECT
    SERVERPROPERTY('ProductVersion ') AS ProductVersion,
    SERVERPROPERTY('ProductLevel') AS ProductLevel,
    SERVERPROPERTY('ResourceVersion') AS ResourceVersion,
    SERVERPROPERTY('ResourceLastUpdateDateTime') AS ResourceLastUpdateDateTime,
    SERVERPROPERTY('Collation') AS Collation;
    
  3. Enregistrez l'emplacement actuel de tous les fichiers de données et fichiers journaux des bases de données système. La reconstruction des bases de données système installe toutes les bases de données système à leur emplacement d'origine. Si vous avez déplacé des fichiers de données ou des fichiers journaux de bases de données système, vous devrez à nouveau les déplacer.

    SELECT name, physical_name AS current_file_location
    FROM sys.master_files
    WHERE database_id IN (DB_ID('master'), DB_ID('model'), DB_ID('msdb'), DB_ID('tempdb'));
    
  4. Recherchez la sauvegarde actuelle des bases de données et msdb des masterbases modelde données.

  5. Si l’instance de SQL Server est configurée en tant que serveur de distribution de réplication, recherchez la sauvegarde actuelle de la distribution base de données.

  6. Vérifiez que vous disposez des autorisations appropriées pour reconstruire les bases de données système. Pour effectuer cette opération, vous devez être membre du rôle serveur fixe sysadmin . Pour plus d’informations, consultez Rôles de niveau serveur.

  7. Vérifiez que les mastercopies des fichiers de modelmsdb modèle de données et de données existent sur le serveur local. L’emplacement par défaut des fichiers de modèle est C:\Program Files\Microsoft SQL Server\MSSQL<xx>.MSSQLSERVER\MSSQL\Binn\Templates (où <xx> se trouve la version que vous avez installée). Ces fichiers sont utilisés pendant le processus de reconstruction et doivent être présents pour que l'installation réussisse. S'il en manque, exécutez la fonctionnalité Réparer du programme d'installation ou copiez manuellement les fichiers à partir du média d'installation. Pour localiser les fichiers sur le support d’installation, accédez au répertoire de plateforme approprié (x86 ou x64), puis accédez à setup\sql_engine_core_inst_msi\Pfiles\SqlServr\MSSQL.X\MSSQL\Binn\Templates.

Reconstruire des bases de données système

La procédure suivante régénère les masterbases de données système, et msdbtempdb les modelbases de données. Vous ne pouvez pas spécifier les bases de données système à reconstruire. Pour les instances en cluster, cette procédure doit être effectuée sur le nœud actif et la ressource SQL Server dans le groupe d’applications de cluster correspondant doit être mise hors connexion avant d’effectuer la procédure.

Cette procédure ne régénère pas la resource base de données. Consultez la section Reconstruire la base de données du système de ressources plus loin dans cet article.

Reconstruire des bases de données système pour une instance de SQL Server

  1. Insérez le support d’installation de SQL Server dans le lecteur de disque ou, à partir d’une invite de commandes, remplacez les répertoires par l’emplacement du setup.exe fichier sur le serveur local. Pour SQL Server 2022 (16.x), l’emplacement par défaut sur le serveur est C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\SQLServer2022.

  2. À partir d'une fenêtre d'invite de commandes, tapez la commande ci-dessous. Les crochets indiquent des paramètres facultatifs. N’entrez pas les crochets. Si vous utilisez un système d'exploitation Windows avec le Contrôle de compte d'utilisateur activé, l'exécution du programme d'installation requiert des privilèges élevés. Pour utiliser l'invite de commandes, vous devez être administrateur.

    setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName /SQLSYSADMINACCOUNTS=accounts [ /SAPWD= StrongPassword ] [ /SQLCOLLATION=CollationName ]
    
    Nom du paramètre Description
    /QUIET ou /Q Spécifie que le programme d’installation doit s’exécuter sans interface utilisateur.
    /ACTION=REBUILDDATABASE Spécifie que le programme d’installation doit recréer les bases de données système.
    /INSTANCENAME=Nom_Instance Nom de l'instance de SQL Server. Pour l'instance par défaut, entrez MSSQLSERVER.
    /SQLSYSADMINACCOUNTS=comptes Spécifie les comptes de groupes Windows ou les comptes individuels à ajouter au rôle serveur fixe sysadmin . Lorsque vous spécifiez plusieurs comptes, utilisez l'espace comme séparateur. Par exemple, entrez BUILTIN\Administrateurs MonDomaine\MonUtilisateur. Lorsque vous spécifiez un compte qui contient un espace vide dans son nom, placez le compte entre guillemets doubles. Par exemple, entrez NT AUTHORITY\SYSTEM.
    [ /SAPWD=MotDePasseFort ] Spécifie le mot de passe du compte SA SQL Server. Ce paramètre est requis si l’instance utilise le mode d’authentification mixte (SQL Server et Authentification Windows).

    Remarque de sécurité : le compte SA est un compte SQL Server connu et il est souvent ciblé par des utilisateurs malveillants. Il est essentiel d’utiliser un mot de passe fort pour la connexion sa .

    Ne spécifiez pas ce paramètre pour le mode d’authentification Windows.
    [ /SQLCOLLATION=NomClassement ] Spécifie un nouveau classement au niveau du serveur. Ce paramètre est facultatif. S'il n'est pas spécifié, c'est le classement actuel du serveur qui est utilisé.

    Important : la modification du classement au niveau du serveur ne modifie pas le classement des bases de données utilisateur existantes. En revanche, les bases de données utilisateur qui seront créées utiliseront le nouveau classement par défaut.

    Pour plus d’informations, consultez Définir ou modifier le classement du serveur.
    [ /SQLTEMPDBFILECOUNT=NumberOfFiles ] Spécifie le nombre de fichiers de tempdb données. Cette valeur peut être augmentée jusqu’à 8 ou jusqu’au nombre de cœurs, la valeur la plus élevée étant applicable.

    Valeur par défaut : 8 ou le nombre de cœurs (la plus petite valeur des deux).
    [ /SQLTEMPDBFILESIZE=FileSizeInMB ] Spécifie la taille initiale de chaque tempdb fichier de données en Mo. Le programme d’installation autorise la taille maximale de 1 024 Mo.

    Valeur par défaut : 8
    [ /SQLTEMPDBFILEGROWTH=FileSizeInMB ] Spécifie l’incrément de croissance de chaque fichier de données tempdb en Mo. La valeur 0 indique que la croissance automatique est désactivée et qu'aucun espace supplémentaire n'est autorisé. Le programme d’installation autorise la taille maximale de 1 024 Mo.

    Valeur par défaut : 64
    [ /SQLTEMPDBLOGFILESIZE=FileSizeInMB ] Spécifie la taille initiale du fichier journal tempdb ​​en Mo. Le programme d’installation autorise la taille maximale de 1 024 Mo.

    Valeur par défaut : 8

    Plage autorisée : Min = 8, Max = 1024
    [ /SQLTEMPDBLOGFILEGROWTH=FileSizeInMB ] Spécifie l’incrément de croissance du fichier journal tempdb ​​en Mo. La valeur 0 indique que la croissance automatique est désactivée et qu'aucun espace supplémentaire n'est autorisé. Le programme d’installation autorise la taille maximale de 1 024 Mo.

    Valeur par défaut : 64

    Plage autorisée : Min = 8, Max = 1024
    [ /SQLTEMPDBDIR=Directories ] Spécifie les répertoires pour les fichiers de données tempdb. Lorsque vous spécifiez plusieurs répertoires, utilisez l’espace comme séparateur. Si plusieurs répertoires sont spécifiés, les fichiers de données tempdb sont répartis dans les répertoires selon le principe du tourniquet (round robin).

    Valeur par défaut : Répertoire des données système.
    [ /SQLTEMPDBLOGDIR=Directory ] Spécifie le répertoire du tempdb fichier journal.

    Valeur par défaut : Répertoire des données système.
  3. Lorsque le programme d'installation a terminé la reconstruction des bases de données système, il revient à l'invite de commandes sans afficher de message. Examinez le fichier journal Summary.txt pour vérifier que le processus s'est correctement déroulé. Ce fichier se trouve à l’adresse C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\Logs.

  4. Le scénario RebuildDatabase supprime les bases de données système et les installe à nouveau dans un état propre. Étant donné que le paramètre du nombre de tempdb fichiers n’est pas conservé, la valeur du nombre de tempdb fichiers n’est pas connue pendant l’installation. Par conséquent, le scénario ebuildDatabase ne connaît pas le nombre de tempdb fichiers à lire. Vous pouvez fournir à nouveau la valeur du nombre de tempdb fichiers avec le paramètre SQLTEMPDBFILECOUNT. Si le paramètre n’est pas fourni, RebuildDatabase ajoute un nombre par défaut de fichiers, soit autant tempdb de tempdb fichiers que le nombre d’UC ou 8, selon la valeur inférieure.

Tâches postérieures à la reconstruction

Après la reconstruction de la base de données, vous devrez peut-être effectuer les tâches supplémentaires suivantes :

  • Restaurez vos sauvegardes complètes les plus récentes des bases de données et msdb des mastermodelbases de données. Pour plus d’informations, consultez Sauvegarder et restaurer des bases de données système (SQL Server).

    Important

    Si vous avez modifié le classement du serveur, ne restaurez pas les bases de données système. Cette opération remplacerait le nouveau classement par le paramétrage de classement précédent.

    Si une sauvegarde n’est pas disponible ou si la sauvegarde restaurée n’est pas en cours, recréez les entrées manquantes. Par exemple, recréez toutes les entrées manquantes pour vos bases de données utilisateur, périphériques de sauvegarde, connexions SQL Server, points de terminaison, et ainsi de suite. Le meilleur moyen de recréer des entrées est d'exécuter les scripts d'origine qui les ont créées.

    Important

    Nous vous conseillons de protéger vos scripts et de les conserver en lieu sûr pour éviter que des personnes non autorisées ne les modifient.

  • Si l’instance de SQL Server est configurée en tant que serveur de distribution de réplication, vous devez restaurer la distribution base de données. Pour plus d’informations, consultez Sauvegarder et restaurer des bases de données répliquées.

  • Déplacer les bases de données système vers les emplacements que vous avez enregistrés précédemment. Pour plus d’informations, consultez Déplacer des bases de données système.

  • Vérifier que les valeurs de configuration à l'échelle du serveur correspondent à celles que vous avez enregistrées précédemment.

Reconstruire la resource base de données

La procédure suivante reconstruit la resource base de données système. Lorsque vous régénérez la resource base de données, tous les correctifs chauds sont perdus et doivent donc être réappliqués.

Reconstruire la resource base de données système

  1. Lancez le programme d’installation de SQL Server (setup.exe) à partir du support de distribution.

  2. Dans la zone de navigation de gauche, sélectionnez Maintenance, puis réparer.

  3. La règle de support du programme d'installation et les routines de fichiers sont exécutées pour garantir que les composants requis sont installés sur votre système et que les règles de validation du programme d'installation ont été correctement exécutées sur l'ordinateur. Sélectionnez OK ou Installer pour continuer.

  4. Dans la page Sélectionner une instance, sélectionnez l’instance à réparer, puis sélectionnez Suivant.

  5. Les règles de réparation sont exécutées pour valider l'opération. Pour continuer, sélectionnez suivant.

  6. Dans la page Prêt à réparer , sélectionnez Réparer. La page Terminé indique que l'opération est terminée.

Créer une msdb base de données

Si la msdb base de données est endommagée ou suspecte et que vous n’avez pas de sauvegarde de la msdb base de données, vous pouvez créer une msdb nouvelle base de données à l’aide du instmsdb script.

Avertissement

La reconstruction de la msdb base de données à l’aide du instmsdb.sql script élimine toutes les informations stockées, msdb telles que les travaux, les alertes, les opérateurs, les plans de maintenance, l’historique de sauvegarde, les paramètres de gestion basée sur des stratégies, la messagerie de base de données, l’entrepôt de données de performances, etc.

  1. Arrêtez tous les services se connectant au moteur de base de données, notamment SQL Server Agent, SSRS, SSIS et toutes les applications utilisant SQL Server comme magasin de données.

  2. Démarrez SQL Server à partir de la ligne de commande à l’aide de la commande :

    NET START MSSQLSERVER /T3608
    

    Pour plus d'informations, consultez Démarrer, arrêter, suspendre, reprendre, redémarrer les services SQL Server. Pour plus d’informations sur l’indicateur de trace 3608, consultez TF3608.

  3. Dans une autre fenêtre de ligne de commande, détachez la msdb base de données en exécutant la commande suivante, en <servername> remplaçant par l’instance de SQL Server :

    SQLCMD -E -S<servername> -dmaster -Q"EXEC sp_detach_db msdb"
    
  4. À l’aide de l’Explorateur Windows, renommez les msdb fichiers de base de données. Par défaut, ils se trouvent dans le sous-dossier DATA de l’instance SQL Server.

  5. À l’aide du Gestionnaire de configuration SQL Server, arrêtez et redémarrez normalement le service moteur de base de données sans indicateurs de trace supplémentaires.

  6. Dans une fenêtre d’invite de commandes, connectez-vous à SQL Server et exécutez la commande :

    SQLCMD -E -S<servername> -i"C:\Program Files\Microsoft SQL Server\MSSQLXX.INSTANCE_NAME\MSSQL\Install\instmsdb.sql" -o"C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Install\instmsdb.out"
    

    Remplacez <servername> par l’instance du moteur de base de données. Utilisez le chemin du système de fichiers de l’instance de SQL Server. Remplacez MSSQLXX.INSTANCE_NAME également par le répertoire qui correspond à votre version et à votre instance.

  7. À l’aide du Bloc-notes Windows, ouvrez le instmsdb.out fichier et vérifiez la sortie des erreurs.

  8. Réappliquez toutes les unités de certification installées sur l’instance, qui mettez à niveau votre msdb base de données vers le niveau de cu actuel.

  9. Recréez le contenu utilisateur stocké dans la msdb base de données, comme les travaux, les alertes et d’autres éléments.

  10. Sauvegardez la base de données msdb .

Reconstruire la tempdb base de données

Si la tempdb base de données est endommagée ou suspecte et que le moteur de base de données ne démarre pas, vous pouvez reconstruire sans avoir à reconstruire tempdb toutes les bases de données système.

  1. Renommez les fichiers actuels tempdb.mdf et templog.ldf les fichiers, s’il n’est pas manquant.

  2. Démarrez SQL Server à partir d’une invite de commandes à l’aide de la commande suivante.

    sqlservr -c -f -T3608 -T4022 -s <instance> -mSQLCMD
    

    Pour un nom MSSQLSERVERd’instance par défaut, pour l’utilisation MSSQL$<instance_name>de l’instance nommée. L’indicateur de trace 4022 désactive l’exécution des procédures stockées de démarrage. L’option -mSQLCMD autorise uniquement sqlcmd.exe à se connecter au serveur. Pour plus d’informations, consultez Autres options de démarrage.

    Note

    Assurez-vous que la fenêtre d’invite de commandes reste ouverte après le démarrage de SQL Server. La fermeture de la fenêtre d’invite de commandes met fin au processus.

  3. Connectez-vous au serveur à l’aide de sqlcmd, puis utilisez la procédure stockée suivante pour réinitialiser l’état de la tempdb base de données.

    exec master..sp_resetstatus tempdb
    
  4. Arrêtez le serveur en appuyant Ctrl+C sur la fenêtre d’invite de commandes.

  5. Redémarrez le service SQL Server. Cela crée un jeu de fichiers de base de tempdb données et récupère la tempdb base de données.

Résoudre les erreurs de reconstruction

Les erreurs de syntaxe et autres erreurs d'exécution sont affichées dans la fenêtre d'invite de commandes. Vérifiez que l'instruction Setup ne comporte pas les erreurs de syntaxe suivantes :

  • Marque oblique manquante (/) devant chaque nom de paramètre.

  • Signe égal manquant (=) entre le nom du paramètre et la valeur du paramètre.

  • Présence d'espaces entre le nom du paramètre et le signe égal.

  • Présence de virgules (,) ou d’autres caractères qui ne sont pas spécifiés dans la syntaxe.

Une fois l’opération de reconstruction terminée, examinez les journaux SQL Server pour toute erreur. L’emplacement du journal par défaut est C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\Logs. Pour localiser le fichier journal qui contient les résultats du processus de reconstruction, accédez au dossier Logs à partir d'une invite de commandes, puis exécutez findstr /s RebuildDatabase summary*.*. Cette recherche vous dirige vers les fichiers journaux qui contiennent les résultats de la reconstruction des bases de données système. Ouvrez les fichiers journaux et recherchez les messages d'erreur pertinents.

Voir aussi