我在 SQL Server 上创建了一个数据库,并在 winforms c# 中创建了一个前端用户应用程序。它已经启动并运行良好,但现在客户要求我设置一个测试版本来培训新员工,这样他们就可以在接受培训时输入虚拟数据,而不会影响“真实”的实时数据库。
当我安装数据库时,我已经编写了所有脚本,但是从那以后情况发生了变化,我不想再次编写所有表的脚本。
是否有一种快速、方便的方法可以在同一台服务器上复制数据库(及其数据),但名称不同?
编辑(在托尼霍普金森的帖子之后)
我已经做到了
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
但我收到以下错误消息
消息 3234,级别 16,状态 2,第 2 行逻辑文件“MyDatabase”不是数据库“MyDatabase”的一部分。使用 RESTORE FILELISTONLY 列出逻辑文件名。消息 3013,级别 16,状态 1,第 2 行 RESTORE DATABASE 异常终止。消息 3154,级别 16,状态 4,第 6 行 备份集保存现有“MyDatabaseTEST”数据库以外的数据库的备份。消息 3013,级别 16,状态 1,第 6 行 RESTORE LOG 异常终止。设备掉落。