如何讓使用中的資料庫中斷所有連線以執行資料庫更新動作

最近有個專案由於需要對資料庫修正設定,必須開啟 SQL Server 2005 的查詢通知(Query Notification)功能,由於開啟查詢通知功能要啟用 Service Broker,而設定時需要中斷所有與該資料庫的連線才能設定成功,我們一般的實務作法是先將資料庫轉為「單人模式」再進行操作,但因為網站並沒有斷線,所以當透過 Management Studio 的 GUI 介面對資料庫切換至單人模式後,這個「單人」卻立即被網站的連線給搶走!

我最後的解決方法並不是先將 IIS 停機,而是透過先寫好的 T-SQL 指令碼批次執行所有動作,跟網站比賽搶人的速度,看是誰先搶到這個「單人」。 ^_^

如下 T-SQL 語法供參:

USE [master]

ALTER DATABASE [DBName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE [DBName] SET SINGLE_USER;

-- 開始 -- 執行資料庫變更作業
ALTER DATABASE [DBName] SET ENABLE_BROKER;
-- 結束 -- 完成資料庫變更作業

ALTER DATABASE [DBName] SET MULTI_USER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE [DBName] SET MULTI_USER;

總之就是先將資料庫轉成「單人模式」後,立即進行資料庫變更作業,然後再立即變回「多人模式」。

  

此文章由 will 發表於 2009/5/15 下午 04:01:59

永久連結 | 評論 (1) | 此文章的RSSRSS comment feed |

分類: SQL Server

標籤:

收藏:

相關文章

評論

五月 16. 2009 15:22

电脑唱歌

我在这里学到了很多东西,很实用.支持作者!

电脑唱歌 cn

新增評論


(將顯示您的Gravatar圖示)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



線上預覽

三月 10. 2010 05:14