如何在SQL Server 2008 Express中的同一台服务器上克隆SQL Server数据库?

我有一个MS SQL Server 2008 Express系统,其中包含一个数据库,我想“复制和重命名”(用于testing目的),但我不知道一个简单的方法来实现这一点。

我注意到,在R2版本的SQL Server中有一个复制数据库向导,但可惜我无法升级。

提前致谢

更新有问题的数据库是围绕一个演出。 我试图恢复我想要复制到一个新的数据库的数据库的备份,但没有运气。

  1. 安装Microsoft SQL Management Studio,可以从Microsoft网站免费下载:

    版本2008

    Microsoft SQL Management Studio 2008是带有高级服务的SQL Server 2008 Express的一部分

    版本2012

    点击下载button并检查ENU \ x64 \ SQLManagementStudio_x64_ENU.exe

    版本2014

    点击下载button并检查MgmtStudio 64BIT \ SQLManagementStudio_x64_ENU.exe

  2. 打开Microsoft SQL Management Studio

  3. 备份原始数据库到文件(db – >任务 – >备份)。
  4. 用新名称(克隆)创build空数据库。
  5. 点击克隆数据库并打开恢复对话框(见图) 恢复对话框
  6. select设备并从步骤1添加bakcup文件。 添加备份文件
  7. 将目标更改为testing数据库 改变目的地
  8. 更改数据库文件的位置,它必须与原来的不同。 你可以直接input文本框,只需添加后缀。 (注意:顺序很重要,selectcheckbox,然后更改文件名。) 换地点
  9. 检查WITH REPLACE和KEEP_REPLICATION 与替换

右键单击要克隆的数据库,单击“ Tasks ,单击“ Copy Database... 。 按照向导,你就完成了。

您可以尝试分离数据库,在命令提示符下将文件复制到新名称,然后附加两个数据库。

在SQL中:

 USE master; GO EXEC sp_detach_db @dbname = N'OriginalDB'; GO 

在命令提示符(为了这个例子,我简化了文件path):

 copy c:\OriginalDB.mdf c:\NewDB.mdf copy c:\OriginalDB.ldf c:\NewDB.ldf 

再次在SQL中:

 USE master; GO CREATE DATABASE OriginalDB ON (FILENAME = 'C:\OriginalDB.mdf'), (FILENAME = 'C:\OriginalDB.ldf') FOR ATTACH; GO CREATE DATABASE NewDB ON (FILENAME = 'C:\NewDB.mdf'), (FILENAME = 'C:\NewDB.ldf') FOR ATTACH; GO 

事实certificate,我曾尝试从错误的备份恢复。

最初我创build了一个新的数据库,然后尝试在这里恢复备份。 我应该做什么,最后是什么,打开恢复对话框,并在目标字段中input新数据库的名称。

所以,总之,从备份恢复的伎俩。

感谢所有的反馈和build议家伙

这是我使用的脚本。 有点棘手,但它的作品。 在SQL Server 2012上testing

 DECLARE @backupPath nvarchar(400); DECLARE @sourceDb nvarchar(50); DECLARE @sourceDb_log nvarchar(50); DECLARE @destDb nvarchar(50); DECLARE @destMdf nvarchar(100); DECLARE @destLdf nvarchar(100); DECLARE @sqlServerDbFolder nvarchar(100); SET @sourceDb = 'db1' SET @sourceDb_log = @sourceDb + '_log' SET @backupPath = 'E:\tmp\' + sourceDb + '.bak' --ATTENTION: file must already exist and SQL Server must have access to it SET @sqlServerDbFolder = 'E:\DB SQL\MSSQL11.MSSQLSERVER\MSSQL\DATA\' SET @destDb = 'db2' SET @destMdf = @sqlServerDbFolder + @destDb + '.mdf' SET @destLdf = @sqlServerDbFolder + @destDb + '_log' + '.ldf' BACKUP DATABASE @sourceDb TO DISK = @backupPath RESTORE DATABASE @destDb FROM DISK = @backupPath WITH REPLACE, MOVE @sourceDb TO @destMdf, MOVE @sourceDb_log TO @destLdf 

使用MS SQL Server 2012,您需要执行3个基本步骤:

  1. 首先,生成仅包含源数据库结构的.sql文件

    • 右键单击源数据库,然后select任务然后生成脚本
    • 按照向导并在本地保存.sql文件
  2. 其次,将源数据库replace为.sql文件中的目标数据库

    • 右键单击目标文件,select新build查询Ctrl-H或( 编辑查找并replace快速replace
  3. 最后,填充数据

    • 右键单击目标数据库,然后select“ 任务”和“ 导入数据”
    • 数据源下拉列表设置为“ SQL Server的.net框架数据提供程序 ”+在Data Source=Mehdi\SQLEXPRESS;Initial Catalog=db_test;User ID=sa;Password=sqlrpwrd15下设置连接string文本字段ex: Data Source=Mehdi\SQLEXPRESS;Initial Catalog=db_test;User ID=sa;Password=sqlrpwrd15
    • 跟目的地一样
    • 检查您想要传输的表格或除“source:…”之外的checkbox以检查全部

你完成了。

在SQL Server 2008 R2中,将数据库作为文件备份到文件夹中。 然后select出现在“数据库”文件夹中的还原选项。 在向导中,在目标数据库中input所需的新名称。 然后select恢复frrom文件并使用刚创build的文件。 我只是做了它,它非常快(我的DB是小的,但仍然)巴勃罗。

如果数据库不是很大,可以查看SQL Server Management Studio Express中的“脚本数据库”命令,这些命令位于资源pipe理器中的数据库项目本身的上下文菜单中。

你可以select所有的脚本; 当然你需要对象和数据。 然后您将整个脚本保存到一个文件。 然后你可以使用该文件重新创build数据库; 只要确保顶部的USE命令设置为正确的数据库即可。

这里提到的解决scheme没有为我工作 – 我正在使用SQL Server Management Studio 2014。

相反,我必须取消选中“选项”屏幕中的“在恢复前执行尾部日志备份”checkbox:在我的版本中,默认情况下会进行检查,并阻止恢复操作完成。 取消选中后,“还原”操作不会出现问题。

在这里输入图像描述

使用导入/导出向导的另一种方法是,select源是服务器与源数据库,然后在目标中select与目标数据库相同的服务器(您需要先创build空数据库),然后点击完成

它将创build所有表并将所有数据传输到新的数据库中,