电脑软硬件应用网
当前位置: 电脑软硬件应用网 > 设计学院 > 网络编程 > 数据库 > 正文
使用sql语句分离和附加数据库的方法
使用sql语句分离和附加数据库的方法
2010-3-15 9:10:31  文/兴百放   出处:电脑软硬件应用网   

    对于分离一个数据库来说,我们可以用Manage Studio界面或者存储过程。但是对于每一种方法都必须保证没有用户使用这个数据库.接下来所讲的都是对于用命令来分离或附加一个数据库。对于用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命令重建日志,得到一个最小的日志文件。也算是一种快速收缩一个大日志文件的方法。

  • 上一篇文章:

  • 下一篇文章:
  • 最新热点 最新推荐 相关文章
    详解如何查找SQL数据库自增ID值不连…
    SQL重建索引重新释放掉字段因更改而…
    SQL教程:SQL Server备份和灾难恢复
    SQL注入攻击:防御和检查SQL注入的手…
    SQL Server日志文件丢失 进行恢复方…
    解决安装SQL Server出现command lin…
    Mysql数据库名和表名在不同系统下的…
    mysql全文搜索:sql的写法
    Windows 7下如何安装SQL Server 200…
    详解SQL数据仓库之时间维度创建的开…
    关于45IT | About 45IT | 联系方式 | 版权声明 | 网站导航 |

    Copyright © 2003-2011 45IT. All Rights Reserved 浙ICP备09049068号