【问题标题】:How to take a restore of a database in SQL server with a different name如何在 SQL Server 中恢复具有不同名称的数据库
【发布时间】:2020-10-14 21:41:37
【问题描述】:

我有一个 PRODUCTION DB 的备份,我想在同一台服务器上创建它的精确副本以用于测试目的。因此,每当我尝试使用不同的名称恢复它时,我都会收到错误消息,因为“无法获得独占访问权限,因为数据库正在使用中”。由于组织政策,源数据库无法脱机或断开连接。

【问题讨论】:

  • 你能更详细地描述你是如何“尝试用不同的名字来恢复它的”吗?您是否在 UI 中指向并单击?

标签: sql sql-server database backup restore


【解决方案1】:

为了在同一实例上恢复数据库副本但名称不同并且不会以任何方式破坏原始数据库,您需要确保恢复到不同的数据库名称并且您需要将与副本关联的所有文件移动到不同的位置。

这将为您创建逻辑文件列表(我们称之为“A”):

RESTORE FILELISTONLY FROM DISK = 'C:\temp\PRODUCTION_DB.bak';

这会告诉你你的当前文件在哪里(我们称之为“B”):

EXEC [PRODUCTION DB].sys.sp_helpfile;

然后您可以根据这些输出手动创建RESTORE 命令:

RESTORE DATABASE PRODUCTION_DB_COPY
  FROM DISK = 'C:\temp\PRODUCTION_DB.bak'
  WITH REPLACE, RECOVERY,
  MOVE 'LogicalName1_fromA' TO 'path_from_filename1_fromB\PhysicalName1_fromA_copy.mdf',
  MOVE 'LogicalName2_fromA' TO 'path_from_filename2_fromB\PhysicalName2_fromA_copy.mdf',
  ...;

老实说,我建议不要尝试通过 Management Studio 中的 UI 执行此操作。它试图提供帮助,但失败了。即使您指定了一个新的数据库名称,它显然也试图恢复您现有的数据库,并且在此处指向和单击错误的方式可能是灾难性的。

【讨论】:

    【解决方案2】:

    这些是步骤

    1. 获取数据库的备份

    2. 确保没有活动连接

    3. 展开管理文件夹

    4. 双击活动监视器

    备份现有数据库,比如说 ABC_test.bak 数据库

    Right click database
        Select Tasks
        Select Back Up
        Verify Database says ABC_test
        Verify Backup Type says full
        Verify Backup component says Database
        Verify Name says ABC_test-Full Database Backup
        Select Backup to Disk
        Select Add
        Select Backup Device
        Select ABC_test
        Under Options…Select the Overwrite all existing backup sets
    

    第 2 步: 创建新数据库。让我们说样品。

    CREATE DATABASE [Sample] ON  PRIMARY 
    ( NAME = N'Sample', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.ANUSHADB\MSSQL\DATA\Sample.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB )
     LOG ON 
    ( NAME = N'Sample_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.ANUSHADB\MSSQL\DATA\Sample_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
    GO
    

    使用 ABC_test 备份恢复示例数据库 右键数据库 选择任务 选择恢复 选择数据库

    Verify the To database says ABC_test
        Select to the From device option
        Select …
        Set Backup media to Backup device
        Select Add
        Select ABC_test
        Check Restore
        Under Options…Select Overwrite the existing database
        Rename the physical names of the log and data files to Sample\Sample.MDF and .LDF
    

    【讨论】:

    • 嗨@Anusha Subashini,我有一种情况,我无法关闭与数据库的现有连接。所以你的解决方案不会有帮助。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多