回答:
既定では、SQL Serverアクティビティは期待どおりに記録されません。一部の書き込みアクティビティはトランザクションログに記録されますが、これはデータベースのセットアップ方法にも依存します。
サーバー上のSELECTアクティビティを追跡するための4つの主なオプションがあります。
あなたは使用することができますSQL Serverプロファイラをサーバーに接続し、それが起こるように、特定の活動を監視します。
サーバー側のトレースを作成して、サーバー上のトレースファイルにアクティビティを記録し、SQL Server Profilerで読み取るか、fn_trace_gettableを使用してさらに分析するためにテーブルにロードすることができます。
サーバー側トレースよりも多くの機能を提供し、MicrosoftがSQL Server 2012以降のサーバー側トレースの代わりに推奨する拡張イベントを使用できます。
あなたは、[ファイル]メニューを使用してスクリプトそれて、その後、(あなたがしたいことなど、特定のイベント、フィルターを、選択してください)あなたのトレースを設定し、サーバー側のトレースを作成するには、サーバー上でそれを実行するために、SQL Serverプロファイラを使用することができます説明したようにこちら。
SELECTステートメントを追跡するためのいくつかのSQL Serverソリューションとテクニックがあります。
特別に開発されたストアドプロシージャと関数–注:この方法には、T-SQLプログラミングの高度な知識と、ストアドプロシージャと関数の追加メンテナンスが必要です(たとえば、データベーススキーマが変更された場合)。詳細については、次の記事をご覧ください:http : //alstechtips.blogspot.com/2011/02/auditing-select-statements-in-sql.html
SQL Serverトレーステクノロジー-次の記事のステップバイステップの説明を読むことができます:http : //solutioncenter.apexsql.com/auditing-select-statements-on-sql-server/
SQL Server監査機能の使用-(SQL Server 2008で導入された)監査機能は、サーバーイベントとデータベースイベントの両方を追跡でき、拡張イベントテクノロジを使用しています。ただし、データベースレベルの監査は、SQL Server DeveloperおよびEnterpriseエディションでのみサポートされています。
ApexSQL AuditやIdera SQL Compliance Managerなどのサードパーティツールを使用する
クエリの実行者を気にしない限り、システムで実行されているクエリに関するメトリックを表示する方法がいくつかあります。これは、最後の再起動以降のデータに限定され、クエリを拡張する深さに応じて、プランキャッシュ(または他のメモリ)のプレッシャーによる可能性があります。
;WITH x AS
(
SELECT
[text] = SUBSTRING(t.[text],
(s.statement_start_offset/2)+1,
COALESCE(NULLIF(s.statement_end_offset,-1),DATALENGTH(t.[text])*2)
-(s.statement_start_offset/2)),
s.execution_count, s.last_execution_time,
s.max_logical_reads, s.max_elapsed_time
FROM sys.dm_exec_query_stats AS s
CROSS APPLY sys.dm_exec_sql_text(s.sql_handle) AS t
)
SELECT * FROM x
WHERE LTRIM([text]) LIKE 'SELECT%';
パターンを拡張したい場合があります-たとえば、これはで始まる;WITH
皮肉なクエリを無視し、SELECT INTO
実際のテーブルを参照しない変数の割り当てをキャプチャします。
ただし、それよりも詳細な情報が必要な場合は、Nathanの回答が適切な出発点です(トレースを使用する場合を除き、プロファイラーは使用しないでください)。システムに対するすべてのクエリのログ記録が無料になるわけではないことを覚えておいてください。