J'essaie en fait de créer un script (dans Sql Server 2008) pour restaurer une base de données à partir d'un fichier de sauvegarde. J'ai créé le code suivant et j'obtiens une erreur -
Msg 3101, Level 16, State 1, Line 3
Exclusive access could not be obtained because
the database is in use.
Msg 3013, Level 16, State 1, Line 3
RESTORE DATABASE is terminating abnormally.
Comment résoudre ce problème?
IF DB_ID('AdventureWorksDW') IS NOT NULL
BEGIN
RESTORE DATABASE [AdventureWorksDW]
FILE = N'AdventureWorksDW_Data'
FROM
DISK = N'C:\Program Files\Microsoft SQL Server\
MSSQL10_50.SS2008\MSSQL\Backup\AdventureWorksDW.bak'
WITH FILE = 1,
MOVE N'AdventureWorksDW_Data'
TO N'C:\Program Files\Microsoft SQL Server\
MSSQL10_50.SS2008\MSSQL\DATA\AdventureWorksDW.mdf',
MOVE N'AdventureWorksDW_Log'
TO N'C:\Program Files\Microsoft SQL Server\
MSSQL10_50.SS2008\MSSQL\DATA\AdventureWorksDW_0.LDF',
NOUNLOAD, STATS = 10
END
sql
sql-server
sql-server-2008
Vapeur
la source
la source
Réponses:
Je suppose que si vous restaurez une base de données, vous ne vous souciez pas des transactions existantes sur cette base de données. Droite? Si tel est le cas, cela devrait fonctionner pour vous:
Maintenant, un élément supplémentaire à prendre en compte. Après avoir défini la base de données en mode utilisateur unique, quelqu'un d'autre peut tenter de se connecter à la base de données. S'ils réussissent, vous ne pourrez pas poursuivre votre restauration. C'est une course! Ma suggestion est d'exécuter les trois déclarations à la fois.
la source
USE master
, nonUSER master
.ALTER DATABASE [AdventureWorksDW] SET MULTI_USER
à la fin pour vous assurer que la base de données est de retour en mode multi-utilisateur normal.SINGLE_USER
mode au moment de la sauvegarde, elle sera enSINGLE_USER
mode lorsque la sauvegarde sera restaurée. S'il était enMULTI_USER
mode au moment de la sauvegarde, il sera enMULTI_USER
mode lors de sa restauration. Vous faites un excellent point: cela vaut vraiment la peine de vérifier une fois la restauration terminée. Vous pouvez également exécuter RESTORE HEADERONLY sur le support de sauvegarde et vérifierIsSingleUser
ou effectuer des calculs binaires sur laFlags
colonne.la source
exécutez cette requête avant de restaurer la base de données:
et celui-ci après restauration:
la source
Pour moi, la solution est:
Cochez Écraser la base de données existante (AVEC REMPLACER) dans l'onglet optoins sur le côté gauche.
Décochez toutes les autres options.
Sélectionnez la base de données source et de destination.
Cliquez sur OK.
C'est tout.
la source
Utilisez le script suivant pour rechercher et supprimer toutes les connexions ouvertes à la base de données avant de restaurer la base de données.
J'espère que cela aidera ...
la source
Je pense qu'il vous suffit de définir la base de données en mode mono-utilisateur avant de tenter de restaurer, comme ci-dessous, assurez-vous simplement que vous utilisez
master
la source
Je viens de redémarrer le service sqlexpress, puis la restauration s'est bien terminée
la source
la source
Solution 1: redémarrez les services SQL et essayez de restaurer la base de données Solution 2: redémarrez le système / serveur et essayez de restaurer la base de données Solution 3: récupérez la base de données actuelle, supprimez la base de données actuelle / de destination et essayez de restaurer la base de données.
la source
Mettre la base de données en mode mono-utilisateur n'a pas fonctionné pour moi, mais la mettre hors ligne, puis la remettre en ligne a fonctionné. C'est dans le menu contextuel de la base de données, sous Tâches.
Assurez-vous de cocher l'option «Supprimer toutes les connexions actives» dans la boîte de dialogue.
la source
Voici une façon de restaurer la base de données de la production au développement:
REMARQUE: je le fais via le travail SSAS pour pousser la base de données de production au développement quotidiennement:
Étape 1: Supprimez la sauvegarde de la veille en développement:
Étape 2: Copiez la base de données de production vers le développement:
Étape 3: restaurer en exécutant le script .sql
Code qui se trouve dans le fichier AE11_Restore.sql:
la source
J'ai eu cette erreur quand il n'y avait pas assez d'espace disque pour restaurer Db. Nettoyer un peu d'espace l'a résolu.
la source
mettre la base de données originale hors ligne a fonctionné pour moi
la source