を試みる前に、私は、SQL Serverデータベースをアップグレードするためのいくつかのコードを書いています。私は、データベースをアップグレードする前に、私は経由して排他ロックを達成:テスト排他ロック
ALTER DATABASE Test SET SINGLE_USER WITH NO_WAIT
しかし、私は排他ロックが、私は上記のコードを実行前可能であるかどうかを確認するために、データベースをテストしたいと思います。テストでは、私は排他ロックを獲得しようとすると、タイムアウトの可能性を回避したいのですが、100%完璧である必要はありません。
そのために、私は以下のコード書いている:私は、1つの以上の行が返された場合は、データベースが使用中でなければならないと仮定してい
SELECT
*
FROM
sys.db_tran_locks
WHERE
resource_database_id = DB_ID('Test') AND
request_session_id <> @@SPID
を。これは本当ですか?それとも簡単じゃないの?アカウントにGBNのコメント@取ると、私は次のステートメントを使用して、既存の接続のロールバックを強制することに決めました
UPDATE:
ALTER DATABASE Test SET SINGLE_USER WITH ROLLBACK IMMEDIATE
このコードを実行する前に、私は、ユーザーに機会を与えるでしょうオプトアウトする。しかし、私は、ユーザーがデータベースにアクティブな接続の一覧を見ることができるようにしたいのですが - ので、情報に基づいた意思決定を行うことができます。それは私をこの質問に導く。
その場合、私がやろうとしていることは、データベースを1つの接続に減らすことができるかどうかを判断することです。現在の接続のセットを照会する方法はありますか? – Mitkins