创建用于测试的重复SQL数据库

PJW*_*PJW 29 sql-server

我在winforms c#中创建了SQL服务器和前端用户应用程序的数据库.它已启动并运行良好,但我现在已被要求设置客户端的测试版本以培训新员工,这样他们就可以在培训时输入虚拟数据,而不会影响"真实"的实时数据库.

当我安装数据库时,我已将其全部编写为脚本,但事情已经发生了变化,我并不特别希望再次编写所有表的脚本.

是否有一种快速,方便的方法可以在同一台服务器上复制数据库(及其数据),但名称不同?

编辑(托尼霍普金森后发布)

我已经达到了这个目标

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 
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误消息

消息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异常终止.设备掉线了.

Joe*_*eph 33

在SQL Server管理工作室中使用copy database选项

在此输入图像描述

  • 不适用于快递版.备份和恢复是您的最佳选择 (7认同)
  • 这看起来很简单 - 但是当我这样做时,下拉任务列表中没有复制数据库选项?! (2认同)

bre*_*sey 8

我发现这种方法在SQL Server 2005和2008 Express Edition上最有效:

Microsoft文档

  1. 右键单击要复制的数据库,然后选择“任务”->“备份...”。
  2. 将备份保存到.bak文件
  3. 右键单击SQL Server Management Studio中对象浏览器中的“数据库”文件夹
  4. 选择“还原数据库”
  5. 作为源,选择“文件”并指向您之前创建的.bak文件。
  6. 更改要恢复到的数据库名称(这对我来说是关键的步骤-您不受下拉菜单中的选项的限制。)

SSMS将根据您提供的名称将.bak文件还原到新数据库。 在此处输入图片说明

  • 谢谢。不知何故,复制数据库流程对我来说崩溃了。 (2认同)