2017-08-03 31 views
0

SQL Serverのシステムテーブルにクエリを実行するJavaアプリケーションを開発しています。 SQL Server Management Studioから、特定のデータベースで実行されているクエリとそのクエリの実行時間、およびクエリの実行に失敗した、実行中の、または正常に実行されたなどのクエリ結果のステータスがわかります。SQL Server 2012 Management Studioの履歴を取得する

この結果はどのようにしてSQL Server Management Studioから取得できますか?

答えて

0

Extended Eventsを参照してください。SQL Serverインスタンスで高度な監視と監査を設定できます。セットアップは簡単ではありませんが、選択できるオプションはたくさんあります。

更新: 下のニーズを満腹する必要があり、それはすべてのシステム上のすべてのDDLの変更を追跡するのDB(master、model、msdb、およびtempdb)ログイン'Your_Login'によって行われ、開始とコミットの間で分割されます。

CREATE EVENT SESSION [DDL_Track] ON SERVER 
ADD EVENT sqlserver.object_altered(
    ACTION(sqlos.task_time,sqlserver.client_app_name,sqlserver.client_connection_id,sqlserver.client_hostname,sqlserver.database_name,sqlserver.server_instance_name,sqlserver.server_principal_name,sqlserver.sql_text,sqlserver.transaction_id,sqlserver.username) 
    WHERE ([sqlserver].[equal_i_sql_unicode_string]([sqlserver].[username],N'Your_Login') AND [sqlserver].[database_id]<=(4))), 
ADD EVENT sqlserver.object_created(SET collect_database_name=(0) 
    ACTION(sqlos.task_time,sqlserver.client_app_name,sqlserver.client_connection_id,sqlserver.client_hostname,sqlserver.database_name,sqlserver.server_instance_name,sqlserver.server_principal_name,sqlserver.sql_text,sqlserver.transaction_id,sqlserver.username) 
    WHERE ([package0].[not_equal_uint64]([database_id],(2)) AND [sqlserver].[not_equal_i_sql_unicode_string]([sqlserver].[username],N'DBA') AND [database_id]<>(13))), 
ADD EVENT sqlserver.object_deleted(SET collect_database_name=(1) 
    ACTION(sqlos.task_time,sqlserver.client_app_name,sqlserver.client_connection_id,sqlserver.client_hostname,sqlserver.database_name,sqlserver.server_instance_name,sqlserver.server_principal_name,sqlserver.sql_text,sqlserver.transaction_id,sqlserver.username) 
    WHERE ([package0].[not_equal_uint64]([database_id],(2)) AND [package0].[not_equal_i_unicode_string]([sqlserver].[username],N'DBA') AND [database_id]<>(13))) 
ADD TARGET package0.event_file(SET filename=N'DDL_Track',max_file_size=(250),max_rollover_files=(1)) 
WITH (MAX_MEMORY=8192 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=120 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=ON) 

これは単にSSMSからファイルを開いて情報にアクセスするための単一のファイルとしてデフォルトの場所に保存された情報でイベントを作成します: X

+0

私はSQLプロファイラを使用していますが、クエリが実行されているホスト名またはクライアントネットワークアドレスを知ることができますか? –

+0

プロファイラーは当時は良い状態でしたが、今はリタイアしました。 XEファイルを通常のテーブルとして読み込む必要がある場合は、XEリーダーを求める新しい質問が表示されますので、上記の方法で拡張イベントを使用してください。 –

+0

TITLE:Microsoft SQL Server Management Studio 指定されたパラメータを使用してストレージを初期化できませんでした。 (Microsoft.SqlServer.XEventStorage) ログファイル名 "DDL_Track *"が無効です。ファイルが存在し、SQL Serverサービスアカウントがファイルにアクセスできることを確認します。 (Microsoft SQL Server、エラー:25718) –

0

古い履歴が必要な場合はプランキャッシュから取得できますが、サーバーが再起動した場合は正確ではありません。

必要な列を使って以下のクエリを即座に実行しようとします。これは走っ、CPU時間をカウントし、メモリ許可

select txt.text,ec.execution_count,ec.max_worker_time,ec.max_grant_kb 
from sys.dm_exec_query_stats ec 
cross apply 
sys.dm_exec_sql_text(ec.sql_handle) txt 

さらにあなたはすべてのクエリを監査し、後で分析するためにファイルに保存するだけでなく、拡張イベントを使用することができ、この情報は、サーバーが

再起動した場合でも保持されます
関連する問題