我在winforms c#中创建了SQL服务器和前端用户应用程序的数据库。 它已经启动并运行良好,但我现在已经被要求设置客户端的测试版本来培训新员工,这样他们就可以在培训时输入虚拟数据,而不会影响“真实”的实时数据库。 / p>
当我安装数据库时,我把它全部编写了脚本,但事情发生了变化,我并不特别想再次编写所有表的脚本。
是否有一种快速,方便的方法可以在同一台服务器上复制数据库(及其数据),但名称不同?
编辑(在Tony Hopkinson之后发布)
我已经达到了这个
exec sp_addumpdevice 'Disk','MyDatabaseBackup',N'D:\MyDatabaseBackup'
Restore Database MyDatabase From MyDatabaseBackup With File = 1,
Move 'MyDatabase' To N'C:\Program Files\Microsoft SQL
Server\MSSQL11.SQLE\MSSQL\DATA\MyDatabaseTEST.mdf',
Move 'MyDatabase_Log' To N'C:\Program Files\Microsoft SQL
Server\MSSQL11.SQLE\MSSQL\DATA\MyDatabaseTEST_log.ldf',
NORECOVERY, NOUNLOAD, STATS = 10
RESTORE LOG [MyDatabaseTEST] FROM [MyDatabaseBackup] WITH FILE = 2, NOUNLOAD, STATS = 10
exec sp_dropdevice MyDatabaseBackup
但是我收到以下错误消息
Msg 3234,Level 16,State 2,Line 2 逻辑文件“MyDatabase”不是数据库“MyDatabase”的一部分。使用RESTORE FILELISTONLY列出逻辑文件名。 Msg 3013,Level 16,State 1,Line 2 RESTORE DATABASE异常终止。 Msg 3154,Level 16,State 4,Line 6 备份集包含除现有“MyDatabaseTEST”数据库之外的数据库的备份。 Msg 3013,Level 16,State 1,Line 6 RESTORE LOG异常终止。 设备掉线。
答案 0 :(得分:30)
在SQL Server管理工作室中使用copy database选项
答案 1 :(得分:5)
我发现这种方法在SQL Server 2005和2008 Express Editions上最有效:
答案 2 :(得分:3)
首先对当前数据库进行完整备份,当然你有:)
你将它恢复到另一个
e.g。
之类的东西exec sp_addumpdevice 'Disk','LiveDataBackup',N'Insert backup file name here including path'
Restore Database TestData From LiveDataBackup With File = 1,
Move 'LiveData' To N'Path to where sqlserver expects the mdfs to be\TestData.mdf',
Move 'LiveData_Log' To N'Path to where sqlserver expects the ldf to be\TaxData1.ldf',
NORECOVERY, NOUNLOAD, STATS = 10
RESTORE LOG [TestData] FROM [LiveDataBackup] WITH FILE = 2, NOUNLOAD, STATS = 10
exec sp_dropdevice LiveDataBackup
上面假设您的实时数据库被巧妙命名为LiveData并测试TestData。
mdf和ldf的路径取决于sql server的版本和实例名称
应该是这样的 C:\ Program Files \ Microsoft SQL Server \ MSSQL11.DENALI \ MSSQL \ DATA \
MSSQL11,因为它是sql 2012,而DENALI是我的实例名称,它默认安装在C:\ Program Files
也没有替换,所以如果你想再次运行它,你需要删除你的测试数据库。
从GUI可能有一些方法可以做到这一点,但我发现它是一个庞大的PIA试图将UI与我想要做的事情联系起来。
答案 3 :(得分:2)
使用MS SQLServer 2012,您需要执行3个基本步骤
首先,生成仅包含源数据库结构的.sql文件
=>右键单击源数据库,然后单击“任务”,然后单击“生成脚本” =>按照向导,你可以在本地保存.sql文件
其次,在.sql文件中替换源数据库与目标数据库
=>右键单击目标文件,打开.sql文件并按New Query和Ctrl-H或(编辑 - 查找和替换 - 嘎嘎替换)
最后,填充数据
=>右键单击detination DB,然后单击Tasks,然后单击Import Data =>数据源drop dow设置为“.net框架数据procider for sql server”+设置连接字符串文本字段在DATA ex:Data Source = Mehdi \ SQLEXPRESS; Initial Catalog = db_test; User ID = sa; Password = sqlrpwrd15
=>与目的地相同的事情 =>检查您要转移的表格或“source:.....”旁边的复选框以检查所有这些
你已经完成了。
答案 4 :(得分:1)
您可以关注(this)
答案 5 :(得分:0)
您要将一个Database_Production复制到同一服务器中的Database_Testing。我将以database_production数据库为例。我已经在服务器上成功测试了。
首先,备份数据库Database_Production。
备份数据库Database_Production 到disk ='H:\ test \ Database_Production.bark';
第二,还原Database_Production,这可以将数据库名称重命名为Database_Testing。
还原数据库Database_Testing 来自磁盘='H:\ test \ Database_Production.bark' 将“ Database_Production_Data”移至“ H:\ test \ Database_Testing_Data.mdf”, 将“ Database_Production_log”移动到“ H:\ test \ Database_Testing_Data.ldf”; GO
然后将数据库Database_Production复制到数据库Database_Testing。 MOVE语句使数据和日志文件还原到指定的位置。您无需创建数据库Database_Testing,脚本将创建它。
答案 6 :(得分:0)
如果需要在同一服务器上创建数据库,只需创建一个空数据库。右键单击它,然后选择“还原”->选择要复制的数据库,然后单击“确定”。