【问题标题】:Create new database using .bak file using T-SQL使用 T-SQL 使用 .bak 文件创建新数据库
【发布时间】:2014-04-07 08:21:21
【问题描述】:

我有一个场景,我需要使用一些预定义的表创建一个新数据库。这些结构将在 .bak 文件中可用。我需要使用 T-SQL 查询使用此 .bak 文件创建新数据库。

我尝试使用创建数据库查询创建新数据库。

    CREATE DATABASE newDataBase

当我尝试将此 .bak 文件恢复到新创建的数据库时,它会抛出错误,例如此备份属于不同的数据库类型,无法恢复此数据库。

    RESTORE DATABASE newDatabase
    FROM DISK = 'c:\SkeletonDataBase\Skeleton.bak';

发生的错误是

Msg 3154, Level 16, State 4, Line 1 现有的“newDatabase”数据库以外的数据库。消息 3013,级别 16, State 1, Line 1 RESTORE DATABASE 异常终止。

我想在不影响源的情况下将数据库恢复到新数据库 数据库及其文件(mdf 和 ldf)。请帮帮我。

我需要一些关于如何使用 T-SQL 使用 .bak 文件创建新数据库的解决方案。任何解决方案都是非常可观的。

【问题讨论】:

  • 到底抛出了什么异常?
  • 我已编辑问题,其中包含错误

标签: database sql-server-2008 tsql


【解决方案1】:

恢复通常可以防止意外地用不同的数据库覆盖数据库。如果 RESTORE 语句中指定的数据库已存在于当前服务器上,并且指定的数据库系列 GUID 与备份集中记录的数据库系列 GUID 不同,则不会还原数据库。在还原中使用“替换”选项。如果您的文件位置不同,另请参阅移动选项。更多信息here.

【讨论】:

  • 这最初看起来很有希望的解决方案,但导致了一些错误。无法覆盖文件“E:\SourceDB.mdf”。数据库“SourceDB”正在使用它。消息 3156,级别 16,状态 4,第 1 行文件“xyz”无法恢复到“E:\SourceDB.mdf”。使用 WITH MOVE 标识文件的有效位置。文件“E:\SourceDB.ldf”不能被覆盖。数据库“SourceDB”正在使用它。文件“xyz_log”无法恢复到“E:\SourceDB.ldf”。使用 WITH MOVE 确定文件的有效位置。
  • 您执行还原的数据库 (newDatabase) 必须脱机。您可以使用如下语句:ALTER DATABASE [newDatabase] SET OFFLINE WITH ROLLBACK IMMEDIATE。恢复完成后,当然,您必须使数据库重新联机。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-15
  • 1970-01-01
  • 2018-02-12
相关资源
最近更新 更多