J'ai une base de données vide:
DB_Clients
Et je veux restaurer la base de données à partir d'un .bak
fichier:
OldDBClients.bak
Voici le chemin:
C:\OldDBClients.bak
Et voici mon script:
USE [master]
GO
RESTORE DATABASE DB_Clients
FROM DISK = 'C:\OldDBClients.bak'
Lorsque je l'exécute, j'obtiens ce message d'erreur:
Msg 3154, niveau 16, état 4, ligne 15
Le jeu de sauvegarde contient une sauvegarde d'une base de données autre que la base de données 'DB_Clients' existante.
Msg 3013, niveau 16, état 1, ligne 15
RESTORE DATABASE se termine anormalement.
Quelqu'un peut-il me dire pourquoi cela se produit? Je dois souligner que le fichier a les autorisations de lecture et d'écriture.
Merci.
Vous devez utiliser WITH REPLACE
option pour écraser la base de données existante.
RESTORE DATABASE DB_Clients
FROM DISK = 'C:\OldDBClients.bak'
WITH REPLACE
Vous devrez probablement également spécifier WITH MOVE
options; dans ce cas:
RESTORE FILELISTONLY FROM DISK = 'C:\OldDBClients.bak'
pour connaître le nom logique de votre MDF/LDFWITH MOVE
options dans votre RESTOREPar exemple:
RESTORE DATABASE DB_Clients
FROM DISK = 'C:\OldDBClients.bak'
WITH REPLACE,
MOVE 'YourMDFLogicalName' TO '<MDF file path>',
MOVE 'YourLDFLogicalName' TO '<LDF file path>'
Veuillez noter que vous pouvez également DROP
votre vide DB_Clients
base de données et utilisez un simple RESTORE
.
Vous devez cette syntaxe:
USE [master]
GO
RESTORE DATABASE DB_Clients FROM DISK = 'C:\OldDBClients.bak' WITH
MOVE 'DB_Clients' TO 'D:\SQLServer\Data\DB_Clients.mdf',
MOVE 'DB_Clients_log' TO 'D:\SQLServer\Log\DB_Clients.ldf', REPLACE
Il demande à SQL Server d'écraser la copie existante et spécifie un emplacement valide pour vos données et fichiers journaux