sp_who2
はサポートが終了し、サポートが終了する予定です。 SQL Server 2016 Enterpriseを使用しています。
チームがsp_who2
の代わりに使用する必要がある、公式のMicrosoft交換品またはDMVとは何ですか?
Sys.dm_exec_sessionsと聞いたことがありますか?
昔はsp_who、sp_who2がありましたが、その後 Adam Machanic が作成され、 sp_whoisactive が作成されました。そして彼は自分が作ったすべてのものを見て、そして見よ、それはとても良かった。そして、次の日には documentation と downloads がありました。
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
の代わりに、次の例を使用してさまざまな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
の動作を確認できます。
select OBJECT_DEFINITION(OBJECT_ID('sp_who2'))
これにより、手順の背後にあるコードが表示されます。
あなたの旅をお楽しみください。