質問

データベースサーバーには、クリーンアップしたいリンクされたサーバーがたくさんあります。

リンクサーバーが使用された最後の日付を決定することは可能ですか?たとえば、最後にクエリが実行されたとき。

役に立ちましたか?

解決

Linkedサーバーを使用するクエリを監視するには、SQLプロファイラーをセットアップする必要があります。使用を簡単に監視できるDMVはありません。

他のヒント

そうかもしれない dmv sys.dm_exec_sql_textを見て、リンクされたサーバー名がSQLステートメントで最後に使用された場所を調べることができます。

set transaction isolation level read uncommitted

SELECT
    (SELECT TOP 1 SUBSTRING(s2.text,statement_start_offset / 2+1 , 
      ( (CASE WHEN statement_end_offset = -1 
         THEN (LEN(CONVERT(nvarchar(max),s2.text)) * 2) 
         ELSE statement_end_offset END)  - statement_start_offset) / 2+1)) 
        AS sql_statement,
    last_execution_time
FROM sys.dm_exec_query_stats AS s1 
    CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2  
WHERE 
    s2.text like '%LinkedServerName%' 
    and last_execution_time > convert(datetime, '2011-01-01 00:00:00.000', 121)
ORDER BY 
    s1.sql_handle, s1.statement_start_offset, s1.statement_end_offset

これについてはたくさんの注意事項:

  • リンクされたサーバーがビュー/機能を介して使用されている場合、結果セットに表示されない場合があります
  • プランキャッシュにある任意のSQLのみが含まれます
    • プランキャッシュは再起動時にクリアされます
    • SQL Serverは、サイズの制限に達すると、キャッシュから古い計画をクリアします

ノート: あなたがそれを微調整してそれを動作させるならば、上記のSQLを変更してください

使用されていないと確信できる唯一の方法は、それを落とすことです。 ;)私はリンクされたサーバーを数週間監視し、その後、それをドロップしてから数時間以内に誰かに不平を言ってもらいました。

最初にスクリプト化する必要があります。 Object Explorerを右クリックして、適切なオプションを選択します。

ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top