您的位置:首页 > 数据库

SqlServer 数据库 分离复制备份然后附加回数据库 sql代码

2015-10-13 11:11 399 查看
工作中,我们经常需要把数据库进行分离,复制数据库到另一个地方,再将原数据库文件附加回数据库 。

当然通过鼠标操作的步骤比较麻烦:

1、 右键数据库 --------任务------分离

2、打开数据库文件所在目录,复制数据库

3、打开要复制到的目录进行粘贴

4、再回到数据库 右键 ----附加 ----选择路径 ……

懒人们实在受不了这样的操作^_^ 因此写下下面代码 偷懒用

DECLARE @DATABaseName VARCHAR(500)

DECLARE @DATABaseFile VARCHAR(500)

DECLARE @DATALogFile VARCHAR(500)

DECLARE @DATACopyPath VARCHAR(500)

DECLARE @CMD VARCHAR(500)

USE [XXHX030C] --要复制备份的数据库名称。多个数据库复制备份的话,每备份完一个数据库后,只用改此名称即可。

SET @DATACopyPath = 'D:\dataDB\' --要复制备份到的目录

SELECT @DATABaseName = DB_NAME()

SELECT @DATABaseFile = physical_name

FROM sys.database_files

WHERE physical_name LIKE'%.mdf%'

SELECT @DATALogFile = physical_name

FROM sys.database_files

WHERE physical_name LIKE'%.ldf%'

PRINT @DATABaseFile + ' ' + @DATALogFile

USE [master]

IF DB_ID('' + @DATABaseName + '') IS NOT NULL

SET @Cmd = (

'ALTER DATABASE ' + @DATABaseName +

' SET SINGLE_USER WITH ROLLBACK IMMEDIATE '

)

EXEC (@CMD)

EXEC sp_detach_db @DATABaseName

SET @CMD = (

'master.dbo.xp_cmdshell ''copy ' + @DATABaseFile + ' ' + @DATACopyPath +

'' + @DATABaseName + '.mdf'' '

)

PRINT @CMD

EXEC (@CMD)

SET @Cmd = (

'master.dbo.xp_cmdshell ''copy ' + @DATALogFile + ' ' + @DATACopyPath +

'' + @DATABaseName + '.ldf'' '

)

EXEC (@CMD)

IF DB_ID('' + @DATABaseName + '') IS NULL

SET @CMD = (

'CREATE DATABASE ' + @DATABaseName + ' ON (FILENAME = ''' + @DATABaseFile

+ ''') FOR ATTACH_REBUILD_LOG'

)

EXEC (@CMD)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: