从还原文件创建新数据库并更改主数据库文件位置

Create a new database from a restore file and change primary database file location

我有一个 SQL Server 2008 数据库 (A),我想将其复制到新服务器以用作以前状态的副本 (A_BKP)。

我从https://docs.microsoft.com/en-us/sql/relational-databases/backup-restore/restore-a-database-to-a-new-location-sql-server?view=sql-server-2017

了解到

这在以后的版本中是可能的,但我也想将目标文件从 C: 驱动器移动到 D:

这在 SQL Server 2008 中可行吗?我需要哪些步骤来准备数据库备份文件以导入到 D: 驱动器。?

如果你想"move"你的数据库到另一个服务器首先你需要分离你的数据库。 指令是:

  • 打开 SSMS
  • 选择要移动的数据库。
  • 右键单击 --> 任务 --> 分离
  • 将显示“分离数据库”弹出窗口。
  • 在分离数据库之前,您需要确保没有人连接到数据库。检查 "Message" 列。它会告诉你是否有连接。如果有连接但您仍想分离数据库,您可以单击 "Drop Connections" 复选框。
  • 按确定

现在您可以将数据库文件(MDF、LDF、FDF)移动到另一个位置。

将您的数据库附加到新服务器:

  • 使用 SSMS 连接到新服务器
  • 右键单击数据库并单击附加
  • 按右中角的添加按钮。
  • 选择您移动的 MDF(主数据库文件)文件,然后按确定。
  • 按确定。

如果要将数据库备份恢复到新服务器作为新数据库:

  • 使用 SSMS 连接到新服务器
  • 右键单击数据库并单击还原数据库
  • 点击源下方右上角的设备并添加您的备份文件
  • 如果您想更改您的数据库名称,您可以在目标 --> 数据库部分更新它。
  • 转到左上角的“文件”选项卡
  • 您可以在那里查看文件位置。如果你想简单地更改位置,你可以在 "Restore As" 列上更新它。
  • 按确定。

或使用以下脚本:

USE [master]
RESTORE DATABASE [A]
FROM  DISK = N'<yourbackuplocation\A_BKP.bak>' 
WITH  FILE = 1,  
MOVE N'A_Main' TO N'<new location for MAIN database file\<file name>.mdf>',  
MOVE N'A_Log' TO N'<new location for LOG database file\<file name>.ldf>',  
NOUNLOAD,  
STATS = 5
GO

如果要将新服务器的数据库备份恢复到现有数据库:

ALTER DATABASE [A] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
RESTORE DATABASE [A] 
    FROM  DISK = '<yourbackuplocation\A_BKP.bak>' WITH  FILE = 1,  
    MOVE N'A_Main' TO N'<new location for MAIN database file\<file name>.mdf>',  
    MOVE N'A_Log' TO N'<new location for LOG database file\<file name>.ldf>',  
    NOUNLOAD,  
    STATS = 5
ALTER DATABASE [A] SET MULTI_USER