web-dev-qa-db-fra.com

Restaurer une base de données avec un nom différent sur le même serveur

J'ai besoin d'une copie d'une base de données en direct appelée Carers sur le même serveur à des fins de test. Le nom de la base de données de test sera Carers_Test.

J'ai pris une sauvegarde des soignants à l'aide de SSMS. Et j'ai essayé de le restaurer en utilisant l'interface graphique. Lorsque j'ai suivi les étapes, la seule chose que j'ai modifiée était le nom de la base de données.

Mais la restauration échoue avec l'erreur:

L'accès exclusif n'a pas pu être obtenu car la base de données est en cours d'utilisation.

Je ne veux rien faire avec la base de données live actuelle, pourquoi est-ce important que la base de données soit utilisée? J'ai essayé de restaurer la même sauvegarde sur mon hôte local et elle a été restaurée avec succès. Lorsque j'essaie de le restaurer sur le même serveur avec la base de données en direct, j'obtiens cette erreur.

S'il vous plaît, quelqu'un m'aide ... je deviens fou!

3
Junior_dba

C'est vraiment simple à résoudre. Vous essayez de remplacer les fichiers d'origine dont vous avez besoin pour vous utilisez l'option move comme ceci

restore database <Your-Database> from disk ='<backup-file-path>' 
with move 'mdf_file_name' to '<new-path>',
move 'log_file_name' to '<new-path>'

par la façon de découvrir le nom du fichier de sauvegarde, utilisez cette commande

restore filelistonly from disk ='<backup-file-path>' 
5
Krismorte

Je pense que cela dépend aussi de la version de Management Studio que vous utilisez. En 2016+ lorsque vous modifiez le nom de la base de données de destination, SSMS modifie le nom des fichiers Restore As (voir les captures d'écran). Je semble me souvenir que dans les anciennes versions de SSMS, vous deviez changer manuellement les noms des fichiers, sinon ils entreraient en conflit avec les fichiers existants.

Faites également très attention aux options "Remplacer la base de données existante" et "Effectuer une sauvegarde du journal de fin avant la restauration". Ces deux devraient être décochés!

Enfin, si j'étais vous, je prendrais une sauvegarde de la base de données de production immédiatement avant d'essayer une restauration de cette base de données de production.

Ici, j'ai changé le nom de la nouvelle base de données: page 1

Ici, les noms des nouveaux fichiers sont modifiés par SSMS. Vous devrez peut-être les modifier manuellement. Dans tous les cas, vérifiez ce que SSMS essaie de faire: page 2

Ici, les deux options importantes ne sont pas cochées: page 3

3
Conrad S.

Il a été suggéré que la raison de votre erreur est due aux fichiers de la base de données (utilisez les mêmes fichiers que votre base de données actuelle/existante). C'est pas la raison de votre erreur. Si c'était le reson, vous auriez vu un message d'erreur différent. Ci-dessous, vous essayez de restaurer une base de données nommée TSQL dans le nom TSQLTest, en utilisant les mêmes noms de fichier que la base de données TSQL existante:

Le fichier "C:\DemoDatabases\DbFiles\a\TSQL.mdf" ne peut pas être remplacé. Il est utilisé par la base de données 'TSQL'.

SSMS est assez bon pour changer les noms de fichiers de base de données lorsque vous tapez quelque chose pour le nom de la base de données à restaurer. L'ancien SSMS a fait cela d'une manière assez stupide, puis est venue une version qui n'a pas changé les noms pour vous, puis dans la version suivante est venue le changement de fichier "intelligent" que nous voyons aujourd'hui. Je ne me souviens pas de l'historique des versions, quant au moment où ces modifications ont été apportées, mais c'était il y a un certain temps.

La raison de votre erreur est que l'interface graphique de restauration tentera par défaut d'effectuer une sauvegarde du journal de fin à l'aide de l'option NORECOVERY. Cela échouera s'il y a des utilisateurs dans cette base de données.

2
Tibor Karaszi

que diriez-vous de quelque chose comme ça? Je restaure la base de données nommée [Northwind] dans une nouvelle base de données nommée [NORTHWND_new]

sachez que je modifie le nom des données et des fichiers journaux.

USE [master]

RESTORE DATABASE [NORTHWND_new]
FROM DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\Northwind.bak'
WITH FILE = 1, MOVE N'Northwind' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\NORTHWND_new.MDF', 
    MOVE N'Northwind_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\NORTHWND_new_log.ldf', NOUNLOAD, STATS = 5
GO
0
Nathan L

Merci beaucoup pour toutes les réponses.Tibor Karaszi et Conrad S., surtout grâce à vous deux car le problème était la sauvegarde de la queue. Il a été initialement coché et l'erreur a été causée par cela.

Je suis soulagé maintenant :)

0
Junior_dba