用sql语句实现分离和附加数据库的方法

对于用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

(0)

相关推荐

  • SQL2008 附加数据库提示5120错误解决方法

    前几天在附加数据库时,出现了这个错误 在win7 x64系统上使用sql2008进行附加数据库(包括在x86系统正在使用的数据库文件,直接拷贝附加在X64系统中)时,提示无法打开文件,5120错误. 这个错误是因为没有操作权限,所以附加的时候出错,只要设置这个文件或文件夹安全属性即可.解决办法:    1.打开该数据库文件存放的目录或数据库文件的属性窗口,选择"属性"菜单->选择"安全"标签->选择"编辑"按钮.    2.在选择组或

  • SQL附加数据库失败问题的解决方法

    为了偷个懒,利用这个数据库,但是在附加的时候出错了. 错误如下: 一开始还以为数据库位置存在问题,所以重新放置了一个位置,仍然无效.最后,上网寻找解决方法.所幸的是此类问题还真有人遇到了,而且也有好几种解决方法.我就用了两种方法,分享一下吧: 方法一: 将要附加的文件拷贝到 SQL Server默认的 Data 目录,此时附加就会成功:即自己所安装的路径下 方法二: 使用window登陆,不使用sql混合验证模式登陆,也可以将数据库附加上去. 这两种方法都可以实现,至于其他的方法,大家可以试试看

  • mssql server 数据库附加不上解决办法分享

    错误15105,从网上找了一些解决方案,一般都是说文件的权限不足的问题, 当然附加的时候必须是有数据库附加权限才可以操作的. 解决办法1:给相应的MDF文件给Full Control的权限,如果不知道是什么用户可以去Sql Server的配置中心去找 但是我遇到这个用上述方法就不可以. 解决方法2:换个用户试试,我原数据库是用sa登陆的,我试着用sa登陆一下,附加成功了!~ 如果反复的用sa登陆却登陆失败,可能是没有开权限. 权限可以在登陆用户的选项中设置,允许登陆即可. 验证模式则可以在服务器

  • SQL Server 数据库分离与附加(图文教程)

    一.概述 SQL Server提供了"分离/附加"数据库."备份/还原"数据库.复制数据库等多种数据库的备份和恢复方法.这里介绍一种学习中常用的"分离/附加"方法,类似于大家熟悉的"文件拷贝"方法,即把数据库文件(.MDF)和对应的日志文件(.LDF)拷贝到其它磁盘上作备份,然后把这两个文件再拷贝到任何需要这个数据库的系统之中.比如,在实验教学过程中,同学们常常想把自己在学校实验室计算机中创建的数据库搬迁到自己的计算机中而不想

  • sql server2012附加数据库问题解决方法

    SQLServer错误5120:先用widows用户登录附加再分离重新用sa附加就行了 不行的话,绝招: 你先用SQLServer创建一个新的数据库,然后用你要附加的文件去覆盖掉创建的文件!覆盖之前,记得计算机-管理-服务-把SQL服务关掉

  • 附加到SQL2012的数据库就不能再附加到低于SQL2012的数据库版本的解决方法

    昨天我只是将数据库附加到SQL2012,然后各个数据库都做了收缩事务日志的操作 兼容级别这些都没有改 再附加回SQL2005的时候就报错 在SQL2012里附加,确实是90级别,但是在SQL2005死活附加不上 备份数据库再还原也是一样 重建事务日志也是一样 然后我做了一个实验,检查一下附加到SQL2012的数据库和附加到SQL2005的数据库,两个数据库的文件头有什么不同 注意:两个数据库的兼容级别都是90,附加到SQL2012之后我也没有动过兼容级别!! 我们用同一个数据库,分别附加到SQL

  • sql2008 附加数据库时出现错误5123提示的解决方法

    错误载图 解决方法: 1.直接把己有数据库复制到sql安装目录下C:/Program Files/Microsoft SQL Server/MSSQL10.MSSQLSERVER/MSSQL/DATA 这样就可以附加,不知道是不是在装数据库时漏选了什么操作,以前没遇到过. 2.在己有数据库mdf和ldf文件上, 右键---->属性---->添加---->高级---->立即查找---->Authenticated Users---->确定 ------>完全控制勾上

  • SQL SERVER 2008 无法附加数据库的解决方法

    复制代码 代码如下: 标题: Microsoft SQL Server Management Studio ------------------------------ 无法为该请求检索数据. (Microsoft.SqlServer.Management.Sdk.Sfc) 有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&LinkId=20476 --------------------------

  • Sqlserver 2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法

    最近几天从网上找了几个asp.net的登录案例想要研究研究代码,结果在用Sql Server2005附加数据库文件时弹出错误信息: 看到网友回复说:只需给Authenticated Users赋所有权限就行了. 本人也遇到类似的问题,但是解决方法很简单,只需要使用管理员的身份打开SQL Server Management Studio,即可附加数据库了 如下图:  ,一时无解,遂求助于百度谷歌,经过各种试验,特将解决办法整理于此,希望能帮到大家,同时如果有好的意见大家多多交流啊! 方案一:切换登

  • SQLServer 附加数据库后出现只读或失败的解决方法

    解决此问题的几个关键点如下: 1.该现象只会出现在NTFS文件系统中. 2.由NTFS文件系统的访问权限导致. 一般手工操作的解决方案如下: 1.控制面板->文件夹选项->查看 关闭"使用简单文件共享(推荐)" 2.选择存放数据库文件的文件夹,右键选择属性,这时会多出一个"安全"选项卡,选择最后一个用户,将该用户的权限设为"完全控制". 经过这两步操作后,数据库附加失败或附加后只读的问题即可解决. 下面重点讲这两步,用C#代码的实现,

随机推荐