首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在同一服务器上复制sql server数据库

如何在同一服务器上复制sql server数据库
EN

Server Fault用户
提问于 2013-10-18 14:34:13
回答 2查看 8.1K关注 0票数 2

我有一个server 2008,并希望复制一个数据库,所以我已经有了第二个版本的数据库,以便在同一台服务器上进行测试。

数据库副本向导无法复制数据库,它总是发送关于丢失对象的有趣错误消息(使用SMO副本)。

当我尝试进行备份并以不同的数据库名称还原它时,它仍然保留原始数据库的文件名并重写它(破坏原始数据库)。

那么,如何复制SQL数据库呢?关闭Server,复制物理文件并附加它们?也许是数据库复制的命令行工具?难道不应该有一个简单的复制方法吗?

EN

回答 2

Server Fault用户

回答已采纳

发布于 2013-10-18 15:27:18

首先,您需要通过执行sp_helpdb 'DBNAME‘来确定数据库文件的逻辑名称,并查看名字列。您需要识别数据和日志文件。接下来,需要执行完整的copy_only数据库备份。“只复制”选项并不是绝对必要的,但它可以防止原始数据库中的日志链被破坏。接下来,您需要执行数据库还原,使用MOVE选项为实际的物理文件提供新的名称,这样它们就不会与原始数据库冲突。

下面是一个将划痕数据库复制到划痕_新的数据库的示例。您需要根据SQL安装来调整实际的备份和数据路径。

代码语言:javascript
复制
sp_helpdb 'Scratch'

-- From the resultset of this procedure I learned that the logical 
-- data file name is 'Scratch' and the logical log file name is 'Scratch_log'.

BACKUP DATABASE [Scratch] 
TO DISK='C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\Scratch_Full_Copy.bak' WITH COPY_ONLY 

RESTORE DATABASE [Scratch_New] 
FROM DISK='C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\Scratch_Full_Copy.bak'
  WITH MOVE 'Scratch' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ScratchNew.mdf',
       MOVE 'Scratch_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ScratchNew_Log.ldf'; 
票数 4
EN

Server Fault用户

发布于 2017-03-08 14:17:41

我使用SSMS克隆DBs。

  1. 创建要复制的DB的备份,并将其命名为OriginalDB
  2. 右键单击OriginalDB,选择task,然后选择Restore DB.
  3. 在选项Destination for restore中,放置DB的新名称(例如,NewDB),并在选项Source for restore中选择OriginalDB。

这将创建一个NewDB,它是OriginalDB的精确副本。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/547005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档