首页
网页制作
网络编程
脚本专栏
数据库
网站运营
网络安全
平面设计
CMS教程
搜索
建站极客
数据库
MsSql
正文
用sql语句实现分离和附加数据库的方法
所属分类:
数据库
/
MsSql
阅读数: 555
收藏 0
赞 0
分享
对于用Manage Studio自己看着界面操作就可以应付了。
分离数据库:
对于用存储过程来分离数据库,如果发现无法终止用户链接,可以使用ALTER DATABASE命令,并利用一个能够中断已存在链接的终止选项来把数据库设置为SINGLE_USER模式,设置为SIGLE_USER代码如下:
ALTER DATABASE [DatabaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE下面是分离数据库的CMD命令
EXEC sp_detach_db DatabaseName一旦一个数据库分离成功,从SQL Server角度来看和删除这个数据库没有什么区别。
附加数据库:
对于附加数据库,可以使用sp_attach_db存储过程,或者使用带有FOR ATTACH选项的CREATE DATABASE命令,在SQL Server2005或更高的版本中推荐使用后者,前者是为了向前兼容,它正在逐渐淘汰,而后者更提供更多对文件的控制。
CREATE DATABASE databasename
ON (FILENAME = 'D:\Database\dbname.mdf')
FOR ATTACH | FOR ATTACH_REBUILD_LOG
然而对于这样的附加,我们要注意几个地方。因为涉及到重建日志。
1.对于一个读/写数据库,如果含有一个可用的日志文件,无论使用FOR ATTACH ,还是使用FOR ATTACH_REBULD_LOG,都是一样,都不会对此数据库重建日志文件。如果日志文件不可用或者物理上没有该日志文件,使用FOR ATTACH或FOR ATTACH_REBULID_LOG都会重建日志文件,所以如果我们复制一个带有大量日志文件的数据库到另一台服务器中,就可以只复制.mdf文件,不用复制日志文件,然后使用FOR ATTACH_REBULD_LOG选项重建日志。条件是这台服务器将主要使用或只用改数据库的副本进行读操作。
2.对于一个只读数据库,就有点区别了,如果日志文件不可用,那么就不能更新主文件,所以也就不能重建日志,因此当我们附加一个只读数据库是,必须在FOR ATTACH从句中指定日志文件。
如果使用附加数据库重建了日志文件。使用FOR ATTACH_REBUILD_LOG会中断日志备份链,进行这种操作之前最好做一次数据库完全备份。
使用sp_detach_db存储过程一个好处就是可以保证一个数据库是被干净的关闭,那日志文件就不是附加数据库所必须的,我们可以使用FOR ATTACH_REBUILD_LOG命令重建日志,得到一个最小的日志文件。也算是一种快速收缩一个大日志文件的方法。
Author:兴百放
Web:Http://xbf321.cnblogs.com
更多精彩内容
其他人还在看
sqlserver中将varchar类型转换为int型再进行排序的方法
sql中把varchar类型转换为int型然后进行排序,如果我们数据库的ID设置为varchar型的 在查询的时候order by id的话
评论 0
收藏 0
赞 0
分享
在SQL Server中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名
在项目开发中如果有时修改了一个存储过程,但是如何能够快速的查找到使用了这个存储过程的其它存储过程呢
评论 0
收藏 0
赞 0
分享
sqlserver bcp(数据导入导出工具)一般用法与命令详解
bcp是SQL Server中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据
评论 0
收藏 0
赞 0
分享
重命名SQLServer数据库的方法
本文讲解重命名SQLServer 数据库,包括物理文件名、逻辑文件名的改名
评论 0
收藏 0
赞 0
分享
SQL Server中通过reverse取某个最后一次出现的符号后面的内容(字符串反转)
昨天在项目中遇到了一个非常简单的问题,需要把SQL Server数据库中保存的一段路径地址取出其文件名,但SQL Server又没有现成的方法,最后在网上找到这样的一个方法,原理是先将字符串反转,取出第一个/的位置,从头进行截取后再次反转
评论 0
收藏 0
赞 0
分享
使用SqlBulkCopy时应注意Sqlserver表中使用缺省值的列
今天,想将以前做的一个程序增加点功能,原本就使用SqlBulkCopy批量、定时的从目录中的txt文件导入数据到Sqlserver中。以前一直都使用正常,但是不知怎的就老是出现一个错误
评论 0
收藏 0
赞 0
分享
Sqlserver 2000/2005/2008 的收缩日志方法和清理日志方法
讲解一下sql 2005日志怎么清理。一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大
评论 0
收藏 0
赞 0
分享
SQL Server 2000 清理日志精品图文教程
SQL Server 2000 数据库日志太大!如何清理SQL Server 2000的日志呢
评论 0
收藏 0
赞 0
分享
SQL行号排序和分页(SQL查询中插入行号 自定义分页的另类实现)
如何在SQL中对行进行动态编号,加行号这个问题,在数据库查询中,是经典的问题
评论 0
收藏 0
赞 0
分享
sql分类汇总及Select的自增长脚本
对错误信息进行分类汇总,并实现错误数据的自增长编号
评论 0
收藏 0
赞 0
分享
查看更多
网络赚钱
更多
90后男屌丝如何让淘宝客日赚10万滴
没钱不懂技术的屌丝草根站长该怎么通过网络赚钱
站长故事实战:淘宝买关键词排名SEO服务攻略介绍
不靠网络广告,站长收益从何来?
短视频如何赚钱?短视频自媒体实操经验分享(真实)
2017自媒体账号申请及运营的几点建议
站长故事
更多
有钱就是任性 2014年科技界大佬十大惊人语录
站长故事:一个90后站长的自述
浅析网站运营失败:你除了报怨还学会了什么
年轻站长的苦逼SEO路:虽难却依旧顽强的坚持着
做站7年
人物:戴志康,80后创业者携惊叹号而来