SQL Server 2012で「既存の接続を宛先データベースに閉じる」が無効化されている原因と解決策
SQL Server 2012 Management Studio で「既存の接続を宛先データベースに閉じる」が無効化されている理由
原因 1: 接続の種類
このオプションは、新しい接続を作成する場合にのみ有効です。既存の接続に対しては、このオプションは無効化されます。新しい接続を作成していることを確認してください。
原因 2: セキュリティ設定
「既存の接続を宛先データベースに閉じる」オプションは、管理者権限を持つユーザーのみが利用できます。現在のユーザーが十分な権限を持っていない場合は、このオプションが無効化されます。管理者権限を持っていることを確認するか、管理者にこのオプションを有効にするように依頼してください。
原因 3: データベースの状態
このオプションは、読み取り専用モードで実行しているデータベースに対しては無効化されます。データベースが読み取り専用モードで実行されていないことを確認してください。
原因 4: バージョン
このオプションは、SQL Server 2012 Standard Edition では利用できません。Enterprise Edition または Developer Edition を使用していることを確認してください。
解決策
上記の原因を踏まえ、以下のいずれかの解決策を試してください。
- Enterprise Edition または Developer Edition にアップグレードする: SQL Server 2012 Standard Edition を使用している場合は、Enterprise Edition または Developer Edition にアップグレードしてください。
- データベースを読み取り書きモードに変更する: データベースが読み取り専用モードで実行されている場合は、読み取り書きモードに変更してください。
- 管理者権限を取得する: 現在のユーザーが十分な権限を持っていない場合は、管理者権限を取得するか、管理者にこのオプションを有効にするように依頼してください。
- 新しい接続を作成する: 既存の接続ではなく、新しい接続を作成していることを確認してください。
- このオプションを使用する前に、その影響を慎重に評価することをお勧めします。
- このオプションは、すべての状況で適切とは限りません。たとえば、多くのユーザーがデータベースに同時に接続している場合は、このオプションを有効にすると、パフォーマンスが低下する可能性があります。
- 「既存の接続を宛先データベースに閉じる」オプションは、新しい接続が作成されるときに、既存の接続を宛先データベースに自動的に閉じるかどうかを制御します。このオプションを有効にすると、新しい接続によって既存の接続が切断され、パフォーマンスと可用性が向上する場合があります。
Sample Code to Close Existing Connections to Destination Database in SQL Server 2012
-- Replace 'DestinationDatabaseName' with the actual database name
USE DestinationDatabaseName;
-- Switch the database to single-user mode, effectively closing all existing connections
ALTER DATABASE DestinationDatabaseName SET SINGLE_USER WITH NO_WAIT;
-- Perform the desired operation, such as restoring a backup
-- ...
-- Revert the database to multi-user mode, allowing new connections
ALTER DATABASE DestinationDatabaseName SET MULTI_USER;
Explanation:
Important Considerations:
- Identify Active Connections: Use the
sp_who
system stored procedure to identify the process IDs (SPIDs) of active connections to the destination database.
EXEC sp_who @database_name = 'DestinationDatabaseName';
- Terminate Specific Connections: Use the
KILL
command to terminate specific connections based on their SPIDs.
KILL SPID;
Replace SPID
with the actual SPID of the connection you want to terminate.
Method 2: Using Database Mirroring
If you have database mirroring configured, you can use the ALTER DATABASE ... FORCED SERVICE_OFF
command to break the mirror relationship, effectively forcing the primary database into single-user mode and closing all existing connections.
ALTER DATABASE DestinationDatabaseName FORCED SERVICE_OFF;
Once the operation is complete, you can re-establish the mirror relationship using ALTER DATABASE ... FORCED SERVICE_ON
.
Method 3: Using Log Shipping
Similar to database mirroring, log shipping involves replicating transaction logs from a primary database to a secondary database. If you have log shipping configured, you can temporarily disable log shipping to prevent new transactions from being applied to the secondary database, effectively isolating it from user activity.
Considerations:
sql-server database sql-server-2012