如何在SQL Server 2008 Express中的同一台服务器上克隆SQL Server数据库?
我有一个MS SQL Server 2008 Express系统,其中包含一个数据库,我想“复制和重命名”(用于testing目的),但我不知道一个简单的方法来实现这一点。
我注意到,在R2版本的SQL Server中有一个复制数据库向导,但可惜我无法升级。
提前致谢
更新有问题的数据库是围绕一个演出。 我试图恢复我想要复制到一个新的数据库的数据库的备份,但没有运气。
-
安装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
-
打开Microsoft SQL Management Studio
- 备份原始数据库到文件(db – >任务 – >备份)。
- 用新名称(克隆)创build空数据库。
- 点击克隆数据库并打开恢复对话框(见图)
- select设备并从步骤1添加bakcup文件。
- 将目标更改为testing数据库
- 更改数据库文件的位置,它必须与原来的不同。 你可以直接input文本框,只需添加后缀。 (注意:顺序很重要,selectcheckbox,然后更改文件名。)
- 检查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个基本步骤:
-
首先,生成仅包含源数据库结构的
.sql
文件- 右键单击源数据库,然后select任务然后生成脚本
- 按照向导并在本地保存
.sql
文件
-
其次,将源数据库replace为
.sql
文件中的目标数据库- 右键单击目标文件,select新build查询和Ctrl-H或( 编辑 – 查找并replace – 快速replace )
-
最后,填充数据
- 右键单击目标数据库,然后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所有表并将所有数据传输到新的数据库中,