web-dev-qa-db-ja.com

SQL Server sp_who2は非推奨ですか?

sp_who2はサポートが終了し、サポートが終了する予定です。 SQL Server 2016 Enterpriseを使用しています。

チームがsp_who2の代わりに使用する必要がある、公式のMicrosoft交換品またはDMVとは何ですか?

Sys.dm_exec_sessionsと聞いたことがありますか?

4
user129291

昔はsp_who、sp_who2がありましたが、その後 Adam Machanic が作成され、 sp_whoisactive が作成されました。そして彼は自分が作ったすべてのものを見て、そして見よ、それはとても良かった。そして、次の日には documentationdownloads がありました。

6
Yaroslav

Microsoftが提供する標準機能を使用したい場合は、使用可能な[〜#〜] dmv [〜#〜]sの使用を検討してください。 (動的管理ビュー)Microsoft SQL Serverの不可欠な部分です。

最良の出発点

System Dynamic Management Views (Microsoft Docs)の開始ページを試してください。このページでは、カテゴリにグループ化されたDMVの概要について説明します。

これらのDMVを使用する利点は、日常的に使用するだけでSQL Serverをよりよく理解できることです。常に最新の情報が手元にあるため、更新されたサードパーティツールに依存する必要はありません。

とはいえ、DMVも時間の経過とともに変化します。これについては、DMVの概要にある次のステートメントに記載されています。

重要
動的管理ビューと関数は、実装固有の内部状態データを返します。それらのスキーマとそれらが返すデータは、SQL Serverの将来のリリースで変更される可能性があります。したがって、将来のリリースの動的管理ビューおよび機能は、このリリースの動的管理ビューおよび機能と互換性がない可能性があります。たとえば、SQL Serverの将来のリリースでは、Microsoftは列リストの最後に列を追加することにより、動的管理ビューの定義を拡張する可能性があります。返される列の数が変化してアプリケーションが壊れる可能性があるため、本番環境コードでは構文SELECT * FROM dynamic_management_view_nameを使用しないことをお勧めします。

Sp_who2の置き換え

sp_who2の代わりに、次の例を使用してさまざまなDMVをクエリできます。

-- replacement for sp_who2
SELECT sdes.session_id
      ,sdes.[status]
      ,sdes.login_name
      ,sdes.[Host_name]
      ,sder.blocking_session_id
      ,sdb.name
      ,sdes.cpu_time
      ,sdes.logical_reads --optionally: + sdes.reads + sdes.writes
      ,sdes.last_request_start_time
      ,sdes.program_name
      ,sdes.session_id
      ,sder.request_id
      ,dest.[text]
FROM   sys.dm_exec_sessions             AS sdes
       LEFT JOIN sys.dm_exec_connections     AS sdec
            ON  sdes.session_id = sdec.session_id
       JOIN sys.databases               AS sdb
            ON  sdes.database_id = sdb.database_id
       LEFT JOIN sys.dm_exec_requests  AS sder
            ON  sdes.session_id = sder.session_id
       CROSS APPLY sys.dm_exec_sql_text(sdec.most_recent_sql_handle) AS dest

DMVを使用する大きな利点は、SQL Serverの内部動作について多くを学ぶことができることです。

Sp_who2とは何ですか?

たとえば、次のコマンドを実行して、sp_who2の動作を確認できます。

select  OBJECT_DEFINITION(OBJECT_ID('sp_who2'))

これにより、手順の背後にあるコードが表示されます。

あなたの旅をお楽しみください。

3