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

所属分类: 数据库 / MsSql 阅读数: 619
收藏 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
更多精彩内容其他人还在看

SQL Server正确删除Windows认证用户的方法

这篇文章主要给大家介绍了关于SQL Server正确删除Windows认证用户的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用SQL Server具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

SQL Server查看login所授予的具体权限问题

在SQL Server数据库中如何查看一个登录名(login)的具体权限呢,下面脚本之家小编给大家带来了SQL Server查看login所授予的具体权限问题,感兴趣的朋友一起看看吧
收藏 0 赞 0 分享

Mysql8.0.17安装教程【推荐】

本文通过图文并茂的形式给大家介绍了Mysql8.0.17安装,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C# ling to sql 取多条记录最大时间

这篇文章主要介绍了C# ling to sql 取多条记录最大时间,文中通过实例代码给大家介绍了sql 查询相同记录下日期最大的 一条,代码简单易懂,需要的朋友可以参考下
收藏 0 赞 0 分享

sql server编写archive通用模板脚本实现自动分批删除数据

这篇文章主要介绍了sql server编写archive通用模板脚本实现自动分批删除数据,需要的朋友可以参考下
收藏 0 赞 0 分享

SQL Server怎么找出一个表包含的页信息(Page)

这篇文章主要给大家介绍了关于SQL Server是如何找出一个表包含的页信息(Page)的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用SQL Server具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

SQLyog连接MySQL8.0报2058错误的完美解决方法

这篇文章主要介绍了SQLyog连接MySQL8.0报2058错误的完美解决方法,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

SQL SERVER日志进行收缩的图文教程

这篇文章主要给大家介绍了关于SQL SERVER日志进行收缩的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用SQL SERVER具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

SqlServer中批量update语句

我现在想把S_USER表中的ACCOUNT批量修改成S_PERSON的ACCOUNT,那么就可以参考下面的语句,要找到对应的字段
收藏 0 赞 0 分享

SqlServer AS的用法

本篇文章简要分析,在SQL SERVER中,AS的基本用法,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多