专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » 数据库唯一标识:如何获得数据库唯一访问权 »正文

数据库唯一标识:如何获得数据库唯一访问权

来源: 发布时间:星期四, 2008年6月5日 浏览:291次 评论:0
来源:中计在线
数据库管理员需要定期对测试或发展中的数据库进行恢复,不管是计划中的还是临时的操作需要,恢复数据库的时候一个重要的步骤是要确保在操作过程中拥有数据库的唯一访问权,否则恢复程序就不能完成。那么要怎么样才能获得数据库的唯一访问权以保证数据库恢复顺利进行呢?


Q博士:

以下有几种方法可以让你获得数据库唯一访问权:

Kill 用户

使用这个办法需要注意的是,一旦你Kill掉了连接,要确保它不会再重新连接。有一些系统会有自动连接的设置,那么用这个方法就不太合适。

使用GUI进行数据库恢复

在Enterprise Manager和SQL Server Management Studio里并没有在恢复数据库时Kill掉所有用户的选项。当你运行恢复数据库程序,点击“恢复”按钮,恢复数据库程序会开始运行,但有时候不能完成,会因为各种各样原因,出现错误信息提示。因此,如果你的数据库有开放的交易处理或者连接,这个方法也不适用。

断开数据库,再次连接并恢复数据库。

另一个可行的方法就是断开数据库。在通过GUI断开数据库时,你可以选择首先断开现有连接。要Kill掉所有的连接,然后把数据库设置为单用户模式,最后把数据库断开,使其离线。

通过这个方法,你可以断开现有连接,重新连接数据库,并把它设置为单用户模式,再进行数据库恢复。不过这个方法还是无法排除其他连接与你重新连接同时出现的可能性。因此,这个方法其实也不是十分好,而且步骤太多。

最好的方法应该是使用“ALTER DATABASE”命令把数据库转换成单用户模式,同时拒绝其他任何的执行事务。这个命令可以有以下三种形式:

ALTER DATABASE [Test4] SET SINGLE_USER WITH ROLLBACK IMMEDIATE

OR

ALTER DATABASE [Test4] SET SINGLE_USER WITH ROLLBACK AFTER 30

OR

ALTER DATABASE [Test4] SET SINGLE_USER WITH NO_WAIT

“WITH ROLLBACK IMMEDIATE”这个命令不会等待现有的执行事务完成,它会停止所有开放的执行命令。

“WITH ROLLBACK AFTER ?鄢?鄢?鄢”这个命令在等待?鄢?鄢?鄢秒之后停止所有执行命令。在上面例子里,程序等待了30秒之后开始停止执行事务。

“WITH NO_WAIT”这个命令可以在所有执行事务完成之后把数据库转换为单用户模式。它会等待指定的一段时候,如果执行事务不能在这段时间内完成,该程序就会自动取消。这个办法是最可靠的办法,因为它不会取消任何运行中的执行事务。但是不足的地方是,如果一直存在执行事务,那么这个程序就一直不能完成。

只要把数据库转化成单用户模式,你就可以获得数据库的唯一访问权,并顺利完成数据库恢复。

注意:在选择使用ROLLBACK命令的时候,你会取消所有数据库正在运行的执行事务,虽然取消执行事务不会有什么问题,但是如果存在花费时间较长的执行事务,那么你就要花很长一段时间来完成取消执行事务。因此使用这个命令的时候,要先检查一下数据库系统里有什么执行事务正在运行。如果是针对测试或开发中的系统,反正你需要进行系统恢复,有什么执行事务正在运行并不重要,只是需要注意要取消比较长的执行事务需要较长的时间。
1

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: