博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQLServer之分离数据库
阅读量:5951 次
发布时间:2019-06-19

本文共 2168 字,大约阅读时间需要 7 分钟。

分离数据库注意事项

要求具有 db_owner 固定数据库角色中的成员资格。

可以分离数据库的数据和事务日志文件,然后将它们重新附加到同一或其他 SQL Server实例。 如果要将数据库更改到同一计算机的不同 SQL Server 实例或要移动数据库,分离和附加数据库会很有用。

分离数据库是指将数据库从 SQL Server 实例中删除,但使数据库在其数据文件和事务日志文件中保持不变。 之后,就可以使用这些文件将数据库附加到任何 SQL Server实例,包括分离该数据库的服务器。

如果存在下列任何情况,则不能分离数据库:

已复制并发布数据库。 如果进行复制,则数据库必须是未发布的。 必须通过运行 sp_replicationdboption禁用发布后,才能分离数据库。

如果无法使用 sp_replicationdboption,可以通过运行 sp_removedbreplication删除复制。

数据库中存在数据库快照。

必须首先删除所有数据库快照,然后才能分离数据库。

不能分离或附加数据库快照。

该数据库正在某个数据库镜像会话中进行镜像。

除非终止该会话,否则无法分离该数据库。

数据库处于可疑状态。 无法分离可疑数据库;必须将数据库设为紧急模式,才能对其进行分离。

数据库为系统数据库。

分离只读数据库将会丢失有关差异备份的差异基准的信息。

分离数据库时生成的错误会阻止完全关闭数据库和重新生成事务日志。 收到错误消息后,请执行下列更正操作:

重新附加与数据库关联的所有文件,而不仅仅是主文件。

解决导致生成错误消息的问题。

再次分离数据库。

使用SSMS数据库工具分离数据库

1、连接服务器-》展开服务器-》选择数据库-》右键点击-》选择任务-》选择分离。

2、在分离数据库对话框-》右边要分离得数据库对话框-》数据库名称:列出要分离的数据库-》删除连接:断开与指定数据库的连接,不能分离连接为活动状态的数据库-》更新统计信息:默认情况下,分离操作将在分离数据库时保留过期的优化统计信息;若要更新现有的优化统计信息,请单击此复选框-》状态:显示以下状态之一: 就绪或 未就绪-》消息:当数据库进行了复制操作,则 状态为未就绪, 消息列将显示已复制数据库。如果数据库有一个或多个活动连接,则状态为未就绪,消息列显示<number_of_active_connections> 个活动连接,例如:1 个活动连接。 在分离数据库之前,需要通过选择 删除连接断开所有活动连接。

3、数据库分离结果。

使用T-SQL脚本分离数据库

语法

--声明数据库引用use other_database_name;go --语法exec sp_detach_db [@dbname=] 'database_name' [,[@skipchecks= ] 'skipchecks'] [,[@keepfulltextindexfile=] 'KeepFulltextIndexFile' ];go复制代码

语法注释

--语法示例

--other_database_name

--声明当前使用的数据库不是要分离的数据库

--[@dbname=]'database_name'

--要分离的数据库的名称。database_name是sysname值,默认值为NULL。

--[@skipchecks =]'skipchecks'

--指定跳过还是运行update statistic。同时将skipchecks是nvarchar(10)值,默认值为NULL。

--若要跳过更新统计信息,请指定,则返回 true。 若要显式运行更新统计信息,请指定false。

--默认情况下,执行update statistic可更新有关表和索引中的数据的信息。 对于要移动到只读介质的数据库,执行 UPDATE STATISTICS 非常有用。

--[@keepfulltextindexfile=] 'KeepFulltextIndexFile'

--指定在数据库分离操作过程中不会删除与所分离的数据库关联的全文索引文件。

--KeepFulltextIndexFile是nvarchar(10)值,该值具有默认值为true。

--如果KeepFulltextIndexFile是false、 与数据库关联的全文索引的所有文件和全文索引的元数据被删除,除非数据库是只读的。

--如果为NULL,则返回true,全文索引相关的元数据保留。

--@keepfulltextindexfile中的未来版本将删除参数SQL Server。请不要在新的开发工作中使用此参数,并尽快修改当前仍在使用此参数的应用程序。

示例

--声明数据库引用use master;go --进行数据库分离--方式一--exec sp_detach_db @dbname='testss'--,@skipchecks='true'--,@keepfulltextindexfile='true';  --方式二exec sp_detach_db 'testss','true','true';go复制代码

示例结果:T-SQL脚本执行完毕需要在对象资源管理器刷新才能看到分离结果。

转载地址:http://xxpxx.baihongyu.com/

你可能感兴趣的文章
JavaWeb网上图书商城完整项目--day02-10.提交注册表单功能之页面实现
查看>>
Tomcat组件梳理--Server
查看>>
记录一下这次web实训的两个网站
查看>>
POJ-1830 开关问题 高斯消元
查看>>
HDU-4366 Successor 线段树+预处理
查看>>
做程序开发的你如果经常用Redis,这些问题肯定会遇到
查看>>
CAS-认证流程
查看>>
006android初级篇之jni数据类型映射
查看>>
Java 集合框架查阅技巧
查看>>
apache配置虚拟主机
查看>>
CollectionView水平和竖直瀑布流的实现
查看>>
前端知识复习一(css)
查看>>
从输入网址到显示网页的全过程分析
查看>>
spark集群启动步骤及web ui查看
查看>>
Maven学习笔记二:常用命令
查看>>
利用WCF改进文件流传输的三种方式
查看>>
程序员的素养
查看>>
Spring学习总结(2)——Spring的常用注解
查看>>
关于IT行业人员吃的都是青春饭?[透彻讲解]
查看>>
钱到用时方恨少(随记)
查看>>