2014-03-19 37 views
0

你好,我有关于哪个用户工作的数据库。 我想为测试目的创建此数据库的副本。在sql server 2012 express中创建数据库副本

谁能告诉我们该怎么做? 我试过从copy a database within SQL Server Express?

但是复制文件并附加它破坏第一个数据库,并试图将备份恢复到新的数据库抛出错误,数据库是不一样的。

任何人都可以建议我的解决方案吗?

为@Nadeem_MK建议我创建的备份,现在我想用这个脚本来恢复:

RESTORE DATABASE [Equipment Test] -- use your new db name 
FROM DISK = N'C:\Backup\ExistingDb.bak' --Path of backup location 
WITH REPLACE,RECOVERY, 
MOVE N'Equipment Test' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\ExistingDb.mdf', --logical name and physical name 
MOVE N'Equipment Test_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\ExistingDb.ldf' --logical name and physical name 

,这将引发错误:

Msg 1834, Level 16, State 1, Line 1 
The file 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Equipment.mdf' cannot be overwritten. It is being used by database 'Equipment'. 
Msg 3156, Level 16, State 4, Line 1 
File 'Equipment' cannot be restored to 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Equipment.mdf'. Use WITH MOVE to identify a valid location for the file. 
Msg 1834, Level 16, State 1, Line 1 

The file 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Equipment_log.ldf' cannot be overwritten. It is being used by database 'Equipment'. 
Msg 3156, Level 16, State 4, Line 1 
File 'Equipment_log' cannot be restored to 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Equipment_log.ldf'. Use WITH MOVE to identify a valid location for the file. 
Msg 3119, Level 16, State 1, Line 1 
Problems were identified while planning for the RESTORE statement. Previous messages provide details. 
Msg 3013, Level 16, State 1, Line 1 
RESTORE DATABASE is terminating abnormally. 

正如你可以看到恢复的努力从备份数据库而不是新数据库更改文件

@更新: 备份脚本:

--To backup Database (Delete the previous backup first) 
BACKUP DATABASE Equipment --Database Name 
TO DISK = 'C:\Backup\Equipment.bak' WITH INIT --Path of backup location 

文件地点:

C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Equipment.mdf 
C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Equipment_log.ldf 
C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Equipment Test.mdf 
C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Equipment Test_log.mdf 

恢复功能:

RESTORE DATABASE [Equipment Test] -- use your new db name 
FROM DISK = N'C:\Backup\Equipment.bak' --Path of backup location 
WITH REPLACE,RECOVERY, 
MOVE N'Equipment Test' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Equipment2.mdf', --logical name and physical name 
MOVE N'Equipment Test_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Equipment_log2.ldf' --logical name and physical name 
+0

最简单的就是正确地获取备份,然后以不同的名称恢复。 –

+0

是的,对不起,报告文件名应该包含新的db名称..答案已修改!应该现在工作! –

+0

[我如何克隆SQL Server 2008 Express中同一台服务器上的SQL Server数据库?](http://stackoverflow.com/questions/3829271/how-can-i-clone-an-sql-server -database-on-the-same-server-in-sql-server-2008-exp) – qub1n

回答

0

简单,操作步骤:

  1. 主数据库的备份取。

  2. 使用任何想要给它进行测试的名称创建新数据库。

  3. 将主数据库的备份恢复到新创建的测试数据库。

完成!

+0

恢复是否要覆盖磁盘上的现有文件? – gvee

+0

恢复备份到您新创建的数据库。 – Vaibhav

+0

设置特定选项('WITH MOVE'),是 – gvee

0

注意:下面的功能是提供了SQL Express 我在这里留下答案的完整性只有未来的读者。

我能想到的最简单的方法就是让Management Studio完成所有工作!

右键单击要选项任务菜单下的复制和查找复制数据库...数据库。

Copy database task

+0

仅在付费版本中;) – szpic

+0

@szpic Orly!我真的不知道。开发者版是值得的每一分钱';-)' – gvee

2

您可以创建一个备份,并使用以下脚本来恢复它;

--To backup Database (Delete the previous backup first) 
BACKUP DATABASE ExistingDb --Database Name 
TO DISK = 'C:\DBBackup\ExistingDb.bak' WITH INIT --Path of backup location 

然后恢复它;

RESTORE DATABASE NewDbName -- use your new db name 
FROM DISK = N'C:\DBBackup\ExistingDb.bak' --Path of backup location 
WITH REPLACE,RECOVERY, 
MOVE N'Reporting' TO N'C:\Databases\MDF\NewDbName.mdf', --logical name and physical name 
MOVE N'Reporting_log' TO N'C:\Databases\LDF\NewDbName.ldf' --logical name and physical name 
+0

我更新了我的问题,例外 – szpic

+0

OUPS,是我的错,报告文件名应该承担新的数据库名称..答案修正! –

+0

根据您的更改和相同的错误修改了我的脚本。你可以在问题中看到我的路径和Db名称。你能从我的帖子向我展示正确的名字吗?我会gratefull – szpic

2

假设这是原始数据库的路径:

C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Equipment.mdf 
C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Equipment_log.ldf 

和备份的文件名被称为

Equipment.bak 

确保新数据库文件名AREN”与旧的一样。这是个什么错误,你得到的手段:

The file 'C:\...' cannot be overwritten. It is being used by database 'Equipment'. 

说明:不要使用已经有文件的文件名!

而是给这些新的名字。就像这样:

RESTORE DATABASE [Equipment Test] -- use your new db name 
FROM DISK = N'C:\Backup\Equipment.bak' --Path of backup location 
WITH REPLACE,RECOVERY, 
MOVE N'Equipment Test' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Equipment2.mdf', --logical name and physical name 
MOVE N'Equipment Test_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Equipment_log2.ldf' --logical name and physical name 

这基本上是Nadeem_MK的答案,但不是原来的名称Equipment.mdfEquipment_log.ldf,现在你应该有Equipment2.mdfEquipment_log.ldf

如果一切正常,也请opvote Nadeem_MK的答案,因为这是基本上他在说什么。我只是没有足够的声望评论他的回答。

+0

不要担心你的答案给完全相同的错误:) – szpic

+0

这只是没有意义。我测试了一切,对我来说它工作。请提供:1.您用于备份的确切脚本,2.您用于恢复的确切脚本以及3.原始数据库中ldf和mdf的路径。 – user1261104

+0

已更新的问题具有确切的脚本和文件路径。谢谢! – szpic

0

为什么不脚本化数据库并运行脚本?

相关问题