从 bak 文件恢复数据库 sql 服务器的脚本不起作用

script to restore database sql server from bak file, doesn't work

我有一个空数据库:

DB_Clients

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

OldDBClients.bak

这是路径:

C:\OldDBClients.bak

这是我的脚本:

USE [master]
GO
    RESTORE DATABASE DB_Clients
    FROM DISK = 'C:\OldDBClients.bak'

当我执行它时,我得到这个错误信息:

Msg 3154, Level 16, State 4, Line 15
The backup set holds a backup of a database other than the existing 'DB_Clients' database.
Msg 3013, Level 16, State 1, Line 15
RESTORE DATABASE is terminating abnormally.

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

谢谢。

您应该使用以下语法:

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

它指示 SQL 服务器覆盖现有副本并为您的数据和日志文件指定有效位置

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

RESTORE DATABASE DB_Clients
FROM DISK = 'C:\OldDBClients.bak'
WITH REPLACE

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

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

例如:

RESTORE DATABASE DB_Clients
FROM DISK = 'C:\OldDBClients.bak'
WITH REPLACE,
MOVE 'YourMDFLogicalName' TO '<MDF file path>',
MOVE 'YourLDFLogicalName' TO '<LDF file path>'

请注意,您也可以 DROP 您的空 DB_Clients 数据库并使用简单的 RESTORE

第一步: 借助以下命令检查逻辑文件名:

RESTORE FILELISTONLY 
FROM DISK = 'E:\DBBackups\mydb.bak'

第 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'

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

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