DISCONNECT ステートメントを使用する

2024-04-14

SQL Server で既存の接続をクローズする方法

SP_PROCINFO システムプロシージャは、現在の接続に関する情報を提供します。 このプロシージャの出力には、SPID 列が含まれています。 この列には、各接続の SPID (SQL Server プロセス ID) が表示されます。

既存の接続を閉じるには、まずその接続の SPID を特定する必要があります。

USE [master];
EXEC SP_PROCINFO;

このクエリを実行すると、現在のインスタンスに接続されているすべてのプロセスのリストが表示されます。 各行には、SPID 列、USER 列、STATUS 列などの情報が含まれます。

接続を閉じるには、KILL コマンドを使用します。 以下に例を示します。

USE [master];
KILL 50;

上記の例では、SPID が 50 の接続が閉じられます。

DISCONNECT ステートメントを使用して、現在の接続を明示的に閉じることもできます。

DISCONNECT;

このステートメントを実行すると、現在の接続が閉じられ、データベースとの接続が切断されます。

CLOSE ステートメントを使用する

特定の接続ハンドルを閉じるには、CLOSE ステートメントを使用できます。

CLOSE @connection_handle;

上記の例では、@connection_handle 変数に格納されている接続ハンドルが閉じられます。

注意事項

  • すべての接続を閉じる前に、アプリケーションで開いているすべてのカーソルとストアドプロシージャをクローズする必要があります。 そうしないと、エラーが発生する可能性があります。
  • KILL コマンドは、予期せぬ結果をもたらす可能性があるため、注意して使用する必要があります。 接続を閉じる前に、その接続で実行中のすべての操作を完了していることを確認してください。



SP_PROCINFO を使用する

USE [master];

-- 現在のインスタンスに接続されているすべてのプロセスのリストを取得する
EXEC SP_PROCINFO;

-- 閉じる接続の SPID を特定する
DECLARE @spid INT;
SET @spid = 50; -- 閉じる接続の SPID

-- 接続を閉じる
KILL @spid;
USE [master];

-- 現在の接続を閉じる
DISCONNECT;
USE [master];

-- 接続ハンドルを作成する
DECLARE @connection_handle INT;
EXEC sp_addlinkedserver @server = N'MyServer', @srvalias = N'MyAlias';
SET @connection_handle = @@SERVERHANDLE;

-- 接続を閉じる
CLOSE @connection_handle;
  • 上記のコードはあくまで例であり、状況に応じて変更する必要があります。



SQL Server で既存の接続を閉じるその他の方法

SQL Server Management Studio (SSMS) を使用する

SSMS を使用して、アクティブな接続を一覧表示し、個別にまたはまとめて閉じることもできます。

  • アクティブな接続を表示するには:
    1. SSMS で、接続している SQL Server インスタンスに接続します。
    2. オブジェクト エクスプローラー で、サーバー ノードを展開します。
    3. セッション ノードを右クリックし、アクティブなセッションの表示 を選択します。
  • 接続を閉じるには:
    1. アクティブなセッションの表示 ダイアログ ボックスで、閉じる接続を選択します。
    2. 終了 ボタンをクリックします。

SQL Server Profiler は、SQL Server で実行されるイベントを監視および追跡するためのツールです。 Profiler を使用して、アクティブな接続を一覧表示し、個別にまたはまとめて閉じることもできます。

  • アクティブな接続を表示するには:
    1. SQL Server Profiler を起動します。
    2. イベントの選択 ワークシートで、接続 イベントを選択します。
  • 接続を閉じるには:
    1. 右クリック メニューから 終了 を選択します。

以下の Transact-SQL コマンドを使用して、アクティブな接続を一覧表示および閉じることもできます。

  • アクティブな接続を表示するには:
USE [master];
EXEC sp_who;
  • 接続を閉じるには:
USE [master];
KILL spid;

上記の例では、spid 変数に格納されている接続 ID が閉じられます。


sql sql-server


SQL Server 2005で電話番号を格納するためのデータ型:詳細解説

SQL Server 2005で電話番号を格納するためのデータ型は、さまざまな選択肢があり、それぞれに利点と欠点があります。最適なデータ型は、電話番号の形式、データの使用方法、およびパフォーマンス要件によって異なります。主な選択肢char(n): 固定長の文字列型です。電話番号が常に同じ長さである場合に適しています。...


【徹底比較】MySQLで数値範囲を生成する3つの方法のメリットとデメリット

RAND()関数とFLOOR()関数を使うRAND()関数は、0から1までの範囲のランダムな浮動小数点数を生成します。FLOOR()関数は、引数以下のもっとも大きな整数値を返します。これらの2つの関数を組み合わせることで、指定した範囲の数値を生成することができます。...


データアクセス徹底解説:Entity Framework vs. LINQ to SQL vs. ADO.NET

この解説では、データアクセスのための3つの主要なテクノロジー、Entity Framework、LINQ to SQL、ADO. NET とストアドプロシージャについて比較します。それぞれの特徴、利点、欠点、そして適切なユースケースについて説明します。...


Oracleでの文字列連結:初心者から上級者向けチュートリアル

このチュートリアルでは、Oracleデータベースで複数の行の列値を連結する方法について説明します。さまざまな方法がありますが、ここでは最も一般的で便利な2つの方法をご紹介します。方法1: CONCAT 関数を使用するCONCAT 関数は、文字列を連結するために使用される最も基本的な関数です。複数の列値を連結するには、次のように使用します。...


【初心者向け】MySQL/SQL で VARCHAR フィールドの文字列出現回数を簡単にカウントする

COUNT() 関数は、指定された条件に一致するレコードの数を数えます。文字列出現回数を数えるには、次のようなクエリを使用できます。このクエリでは、your_table テーブルの your_column 列内のすべての値が %your_string% パターンに一致するレコードの数を count という名前のエイリアス付きでカウントします。...


SQL SQL SQL SQL Amazon で見る



C#, ASP.NET, SQL Server で発生する「データベース使用中のため削除できない」エラー:徹底解説と解決策

C#, ASP. NET, SQL Server を用いた開発において、データベース削除時に "データベース使用中のため削除できない" というエラーが発生することがあります。このエラーは、削除しようとしているデータベースが現在何らかの処理で使用されていることを示します。