Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Restauration de la base de données principale SQL Server

PRESENTATION

La base de données principale contient des enregistrements de la structure/configuration de l'instance actuelle et de toutes les autres bases de données. Lorsque vous exécutez sp_configure , vous écrivez des données dans la base de données master. Il contient également la plupart des vues de gestion dynamiques nécessaires pour surveiller l'instance.

L'importance de la base de données maîtresse est cruciale. Tout d'abord, il contient les informations nécessaires à l'ouverture de toutes les autres bases de données et doit être ouvert en premier. Ensuite, cela implique tous les principaux au niveau de l'instance pour l'instance actuelle.

Il est crucial de sauvegarder quotidiennement la base de données principale. Il est tout aussi important de savoir comment restaurer la base de données master sur l'instance. Les cas les plus fréquents sont le crash de la base de données ou la nécessité de restaurer la base de données master sur une autre instance lorsque l'on n'utilise plus l'instance source. Dans cet article, nous examinerons le cas particulier du déplacement de la base de données master vers une autre instance.

VÉRIFIER L'ÉTAT DES SERVICES D'APPLICATION

La restauration de la base de données master sur une autre instance impliquera le démarrage de l'instance en mode mono-utilisateur. Ainsi, il est essentiel de s'assurer que la session active est la seule à contrôler l'instance.

Pour cela, empêchez tous les services applicatifs d'accéder à l'instance, en particulier si ces applications disposent d'un accès privilégié. Des problèmes peuvent survenir si vous démarrez l'instance en mode mono-utilisateur alors que l'application a déjà établi une session. Dans ce cas, vous ne pourrez pas poursuivre une session interactive à partir de SQL Server Management Studio.

ARRÊTER LES SERVICES DE SERVEUR SQL

Arrêtez tous les services SQL Server avec le gestionnaire de configuration SQL Server :cliquez avec le bouton droit sur chaque service et sélectionnez Arrêter depuis le menu contextuel (voir fig. 2).

DÉMARRER SQL SERVER EN MODE UTILISATEUR UNIQUE

Pour restaurer la base de données master, vous avez besoin de l'instance SQL Server en mode mono-utilisateur. Suivez les étapes suivantes :

  1. Ouvrir l'invite CMD
  2. Accédez à C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn
  3. Émettez sqlservr –m OR NET start MSSQLServer /c /m /T3604

OU

Notez que l'étape 2 fait référence au Binn emplacement du répertoire. Cela peut être différent dans votre installation.

Vous pouvez trouver le répertoire nécessaire en vérifiant l'onglet Service des propriétés du service SQL Server dans le gestionnaire de configuration SQL Server (voir la figure 4) :

RESTAURER LE MAÎTRE

Lorsque vous restaurez le maître d'une instance à une autre, vous obtenez de nouveaux principaux et de nouvelles valeurs dans les catalogues système contenant des valeurs telles que le nom de l'instance et même l'emplacement tempdb.

Avant de restaurer le maître, assurez-vous que les chemins du serveur de destination sont disponibles pour les fichiers TempDB tels que définis dans le serveur source. Sinon, la nouvelle instance ne démarrera pas correctement une fois la restauration terminée.

  1. Ouvrir SQL Server Management Studio
  2. Exécutez le code de la liste 1 dans SQL Server Management Studio
-- Listing 1: Restore Master Database
restore database master from disk ='<full_path_of_backup>' with replace;

NB : L'instance s'arrêtera une fois la restauration terminée.

CHANGEMENT DE COMPTE DE SERVICE

Pour démarrer SQL Server une fois la restauration terminée, procédez comme suit :

  1. Remplacez le compte de service SQL Server par le compte actuellement connecté.
  2. Ouvrir Démarrer> Tous les programmes> Microsoft SQL Server 2005> Outils de configuration> Gestionnaire de configuration SQL Server
  3. Cliquez avec le bouton droit sur chaque service et sélectionnez Propriétés
  4. Dans la Connexion , entrez le nom de compte souhaité et le mot de passe correspondant.

NOM DU SERVEUR

La base de données master contient le nom de l'instance où elle se trouve. Étant donné que la sauvegarde restaurée dans ce scénario provient d'une instance différente, vous devez mettre à jour le nom du serveur à l'aide de procédures stockées, comme indiqué dans le Listing 2.

-- Listing 2: Change the Instance Name for a SQL Server Instance
-- Check the current server name

select @@SERVERNAME

-- Change the server name as seen by the database

sp_dropserver 'EUK-POSTSVR-01'--Present Server name goes here
go 
sp_addserver 'EUK-POSTBKP-01','local'--New Server name goes here 
go

Redémarrez SQL Server à partir de SQL Server Configuration Manager pour que le changement de nom prenne effet.

CONNEXIONS DE SERVICE

La base de données principale enregistre également toutes les connexions associées à l'instance source. Dans la nouvelle instance, vous devez nettoyer les connexions inutiles. Après cela, vous pouvez ajouter les groupes SQL Server locaux par défaut à l'instance actuelle.

-- Listing 3: Remove Unnecessary Logins
drop login [EUK-POSTSVR-01\SQLServer2005MSSQLUser$EUK-POSTSVR-01$MSSQLSERVER]
drop login [EUK-POSTSVR-01\SQLServer2005MSFTEUser$EUK-POSTSVR-01$MSSQLSERVER]
drop login [EUK-POSTSVR-01\SQLServer2005SQLAgentUser$EUK-POSTSVR-01$MSSQLSERVER]

-- Listing 4: Add local default SQL Server Groups
create login [EUK-POSTBKP-01\SQLServer2005MSSQLUser$EUK-POSTBKP-02$MSSQLSERVER] from windows;
create login [EUK-POSTBKP-01\SQLServer2005SQLAgentUser$EUK-POSTBKP-02$MSSQLSERVER] from windows;
create login [EUK-POSTBKP-01\SQLServer2005MSFTEUser$EUK-POSTBKP-02$MSSQLSERVER] from windows;

NB : Assurez-vous que les comptes de service du serveur et de l'agent appartiennent à leurs groupes respectifs au niveau du système d'exploitation et que ces groupes de système d'exploitation disposent des autorisations requises. Le tableau 1 montre les autorisations pour les comptes de service SQL Server.

S/Non Privilège Requis par
1. Connectez-vous en tant que service Compte de service SQL ServerCompte de service de l'agent SQLCompte de service d'intégration
2. Agir en tant que partie du système d'exploitation Compte de service SQL Server Compte de service de l'agent SQL
3 Connectez-vous en tant que tâche par lots Compte de service SQL Server Compte de service de l'agent SQL
4. Remplacer un jeton au niveau du processus Compte de service SQL Server Compte de service de l'agent SQL
5. Contourner la vérification de parcours Compte de service SQL ServerCompte de service de l'agent SQLCompte de service d'intégration
6. Ajuster les quotas de mémoire pour un processus Compte de service SQL Server Compte de service de l'agent SQL
7. Créer des objets globaux Compte de service d'intégration
8. Verrouiller les pages en mémoire (AWE) Compte de service SQL Server

Une fois l'entretien ménager terminé au niveau de la base de données, revenez au compte de service habituel. Redémarrez l'instance une fois de plus à partir du gestionnaire de configuration SQL Server.

À ce stade, vous pouvez démarrer les services de l'application.

CONCLUSION

Lors de l'exécution du scénario ci-dessus, des erreurs peuvent se produire. Ci-dessous, vous verrez les informations sur ces erreurs.

Si vous résolvez les problèmes, vous pouvez utiliser des outils tels que ProcMon de SysInternal. Ils isolent les problèmes d'autorisation de fichier lors du démarrage de SQL Server (voir figure 7).

S/N Erreur Cause/Solution
1. SQLServerAgent n'a pas pu être démarré (raison :Impossible de se connecter au serveur « (local) »; SQLServerAgent ne peut pas démarrer). Créer des identifiants pour tous les comptes de service locaux
2. Le fournisseur de connexion local du serveur n'a pas pu écouter sur [ \\.\pipe\SQLLocal\MSSQLSERVER ]. Erreur :0x5 L'initialisation de TDSSNIClient a échoué avec l'erreur 0x5, code d'état 0x40. L'initialisation de TDSSNIClient a échoué avec l'erreur 0x5, code d'état 0x1. SQL Server n'a pas pu générer le thread FRunCM. Consultez le journal des erreurs SQL Server et les journaux des événements Windows pour obtenir des informations sur les éventuels problèmes connexes. Impossible de démarrer la bibliothèque réseau en raison d'une erreur interne dans la bibliothèque réseau. Pour déterminer la cause, passez en revue les erreurs qui précèdent immédiatement celle-ci dans le journal des erreurs. SQL Server a été démarré précédemment avec un compte de service différent et a été fermé de force. Il se produit lors de la restauration de la base de données master. Pour corriger cela, démarrez l'instance avec le compte de service utilisé à l'étape 3, puis arrêtez le service proprement. Après cela, vous pouvez commencer avec le compte de service régulier.
3. SQLServerAgent n'a pas pu être démarré (raison :erreur lors de la création d'une nouvelle session). Accorder les autorisations appropriées au compte de l'agent SQL

RÉFÉRENCES

Base de données principale