脚本从bak文件恢复数据库sql server,不起作用

Esr*_*_92 18 sql-server sql-scripts database-restore

我有一个空的数据库:

DB_Clients

我想从.bak文件中恢复数据库:

OldDBClients.bak
Run Code Online (Sandbox Code Playgroud)

这是路径:

C:\OldDBClients.bak
Run Code Online (Sandbox Code Playgroud)

这是我的脚本:

USE [master]
GO
    RESTORE DATABASE DB_Clients
    FROM DISK = 'C:\OldDBClients.bak'
Run Code Online (Sandbox Code Playgroud)

当我执行它时,我收到此错误消息:

消息3154,级别16,状态4,行15
备份集包含除现有"DB_Clients"数据库之外的数据库的备份.
Msg 3013,Level 16,State 1,Line 15
RESTORE DATABASE正在异常终止.

有人能告诉我为什么会这样吗?我必须指出该文件具有读写权限.

谢谢.

tez*_*zzo 20

您需要使用WITH REPLACE选项才能覆盖现有数据库.

RESTORE DATABASE DB_Clients
FROM DISK = 'C:\OldDBClients.bak'
WITH REPLACE
Run Code Online (Sandbox Code Playgroud)

可能你还需要指定WITH MOVE选项; 在这种情况下:

  • 用于RESTORE FILELISTONLY FROM DISK = 'C:\OldDBClients.bak'了解MDF/LDF的逻辑名称
  • WITH MOVE在RESTORE中使用选项

例如:

RESTORE DATABASE DB_Clients
FROM DISK = 'C:\OldDBClients.bak'
WITH REPLACE,
MOVE 'YourMDFLogicalName' TO '<MDF file path>',
MOVE 'YourLDFLogicalName' TO '<LDF file path>'
Run Code Online (Sandbox Code Playgroud)

请注意,您也可以使用DROPDB_Clients数据库并使用简单的数据库RESTORE.


Ale*_*lex 11

你应该这样的语法:

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
Run Code Online (Sandbox Code Playgroud)

它指示SQL Server覆盖现有副本,并为数据和日志文件指定有效位置


Rag*_*hav 5

步骤 1:在以下命令的帮助下检查逻辑文件名:

RESTORE FILELISTONLY 
FROM DISK = 'E:\DBBackups\mydb.bak'
Run Code Online (Sandbox Code Playgroud)

第 2 步:在以下查询中使用您从上述查询中获得的逻辑名称:

 RESTORE DATABASE [mydb_new]
  FILE = N'<MDFLogicalName>'
  FROM DISK = N'E:\DBBackups\mydb.bak'
  WITH 
    FILE = 1, NOUNLOAD, STATS = 10,
    MOVE N'<MDFLogicalname>'
    TO N'E:\DBBackups\mydb_new.mdf',
    MOVE N'<LDFLogicalName>'
    TO N'E:\DBBackups\mydb_new_0.ldf'
Run Code Online (Sandbox Code Playgroud)

使用正确的值运行上述命令后,您将看到如下输出:

10 percent processed.
20 percent processed.
30 percent processed.
40 percent processed.
50 percent processed.
60 percent processed.
70 percent processed.
80 percent processed.
90 percent processed.
100 percent processed.
Processed 7672 pages for database 'mydb_new', file '<MDFLogicalname>' on file 1.
Processed 5 pages for database 'mydb_new', file '<LDFLogicalName>' on file 1.
RESTORE DATABASE ... FILE=<name> successfully processed 7677 pages in 0.780 seconds (76.893 MB/sec).

Completion time: 2019-10-20T11:35:31.8343787+05:30
Run Code Online (Sandbox Code Playgroud)