具体问题解决:分离脚本

具体问题解决:分离脚本

  有时候需要从一个服务器转移数据库到另一个。如果打算一下子分离所有数据库,那么下面的脚本就是有用了。
 
生成分离脚本:
 
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'

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119723.html原文链接:https://javaforall.net

(0)
上一篇 2021年11月26日 上午8:00
下一篇 2021年11月26日 上午9:00


相关推荐

  • 为了1024[通俗易懂]

    为了1024[通俗易懂]为了1024

    2022年6月24日
    29
  • 【玩】三阶魔方公式

    【玩】三阶魔方公式每次忘记公式 找到当时记忆的公示都得查很费劲 索性记录一下 一 基本 1 标注 一般来说 你可能需要整体地转动魔方来找到合适的是用公式的位置 但是为了简单起见 在使用一条具体公式时 只需要转动魔方的一面即可 不需要整体转动魔方的位置 所以一般来说 在一条公式里 你需要保证魔方的一面冲向你 并只需要转动右手边的棱 right R R 上方的棱 up U U 面对你的面 front F F 图片来自于魔方贴吧向上转动右手边的棱 R 上 向下转动右手边的棱 R 下 向左转动上方的棱 U 左

    2026年3月17日
    2
  • 浅谈 &0xFF操作

    浅谈 &0xFF操作在java.io.FilterOutputStream.DataOutputStream:与机器无关地写入各种类型的数据以及String对象的二进制形式,从高位开始写。这样一来,任何机器上任何DataInputStream都能够读取它们。所有方法都以“write”开头,例如writeByte(),writeFloat()等。java.io.FilterOutputStream.PrintSt

    2022年6月19日
    33
  • 嵌入式Linux移植USB网卡驱动「建议收藏」

    嵌入式Linux移植USB网卡驱动「建议收藏」硬件平台:realARM6410操作系统:fedorakernel2.6.33.3-85.fc13.i686.PAE交叉编译器:arm-none-linux-gnueabigccversion4.3.2WIFI模组:磊科NW336芯片realtek8188cus

    2026年3月6日
    7
  • python jinja2_Python模块学习 – jinja2

    python jinja2_Python模块学习 – jinja2转置 https www cnblogs com dachenzi p 8242713 html 模板要了解 jinja2 那么需要先理解模板的概念 模板在 Python 的 web 开发中广泛使用 它能够有效的将业务逻辑和页面逻辑分开 使代码可读性增强 并且更加容易理解和维护 模板简单来说就是一个其中包涵占位变量表示动态的部分的文件 模板文件在经过动态赋值后 返回给用户 gt 可以理解为渲染

    2025年5月21日
    6
  • Http请求超时的一种处理方法[通俗易懂]

    Http请求超时的一种处理方法[通俗易懂]URLConnection类常见的超时处理就是调用其setConnectTimeout和setReadTimeout方法:setConnectTimeout:设置连接主机超时(单位:毫秒)setRea

    2022年8月2日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号