首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >具体问题解决:分离脚本

具体问题解决:分离脚本

作者头像
用户1217611
发布2018-01-30 16:17:09
5020
发布2018-01-30 16:17:09
举报
文章被收录于专栏:文渊之博文渊之博

有时候需要从一个服务器转移数据库到另一个。如果打算一下子分离所有数据库,那么下面的脚本就是有用了。

生成分离脚本:

SELECT DISTINCT 'use master;' + Char(10) + 'GO' + Char(10)                 
+ 'ALTER DATABASE ['                 + CONVERT(VARCHAR(500), Db_name(database_id))                 + '] '                 
+ 'SET  SINGLE_USER WITH ROLLBACK IMMEDIATE'                 
+ Char(10) + 'use master;' + Char(10) + 'GO'                 
+ Char(10)                 
+ 'EXEC master.dbo.sp_detach_db @dbname = N'                 
+ ''''                 + CONVERT(VARCHAR(500), Db_name(database_id))                 + '''' 
+ ';' + Char(10) 
+ 'GO' + Char(10) 
FROM   master.sys.master_files WHERE  Db_name(database_id) NOT IN ( 'master', 'model', 'msdb', 'tempdb' )  

这个脚本生成了需要分离数据库的脚本。在where子句中排除了四个系统数据库。

附加数据库操作脚本:

  下面将生成一个脚本来分离数据库。确保运行在原服务器上。因为一旦你分离数据库,数据库将在原来的服务器上消失。

  脚本基于一个重要假设,假定每个数据库只包含一个数据文件和一个日志文件。如果有数据库实例带有多个数据或者日志文件,还要手动分离。另外,脚本假定源和目标服务器有相同的文件路径。如果日志或者数据文件路径不同,也需要重新替换生成的脚本。

SELECT DISTINCT 'use master;' + Char(10) + 'GO' + Char(10)                 
+ 'CREATE DATABASE ['                 + CONVERT(VARCHAR(500), Db_name(x.database_id))                 + ']' 
+ ' ON ' + Char(10) + '( physical_name = N'                 + '''' 
+ x.physical_name + '''' + '),' + Char(10)                 
+ '( physical_name = N' + '''' + y.physical_name                 + '''' + ')' 
+ Char(10) + ' FOR ATTACH' + Char(10) 
+ 'GO' FROM   master.sys.master_files x,        master.sys.master_files y 
WHERE  Db_name(x.database_id) NOT IN ( 'master', 'model', 'msdb', 'tempdb' )        
AND x.database_id = y.database_id        AND x.physical_name LIKE '%mdf'         
AND y.physical_name LIKE '%ldf'
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-06-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档