加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 13:12:37 所属栏目:MsSql教程 来源:网络整理
导读:工作中,我们经常需要把数据库进行分离,复制数据库到另一个地方,再将原数据库文件附加回数据库 。 当然通过鼠标操作的步骤比较麻烦: 1、 右键数据库 --------任务------分离 2、打开数据库文件所在目录,复制数据库 3、打开要复制到的目录进行粘贴 4、再


工作中,我们经常需要把数据库进行分离,复制数据库到另一个地方,再将原数据库文件附加回数据库 。

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

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)?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读