テーブルを利用中か確認する

不要になったテーブルを削除する場合など、テーブルへのアクセスを確認したい場合があります。

プロファイラでこちらのイベントを取得すれば、簡単に確認することができます。
「Audit Schema Object Access Event」
SELECT
UPDATE
DELETE
TRUNCATE

「Audit Schema Object Management Event」
CREATE
DROP
TRUNCATE

これらのイベントは、SPの中で該当のテーブルが使われても取得することができます。

さらにトレース定義ファイルをエクスポートして、バックグラウンドで実行させておくこともできます。

1.プロファイラの起動

2.サーバへの接続

3.トレースプロパティの設定

「列フィルター」ボタンを押下

4.フィルターの編集

「ObjectName」に確認したいテーブル名を追加します。

5.トレースの実行

6.SQL実行

7.イベントが取得されることを確認

8.プロファイラの停止

9.トレース定義ファイルのエクスポート

10.適当なフォルダに保存

トレース定義ファイルの編集・実行

トレースファイルの出力先(InsertFileNameHere)を編集します。

/****************************************************/
/* Created by: SQL Server 2016 Profiler          */
/* Date: 2017/04/12  14:31:28         */
/****************************************************/


-- Create a Queue
declare @rc int
declare @TraceID int
declare @maxfilesize bigint
set @maxfilesize = 5 

-- Please replace the text InsertFileNameHere, with an appropriate
-- filename prefixed by a path, e.g., c:\MyFolder\MyTrace. The .trc extension
-- will be appended to the filename automatically. If you are writing from
-- remote server to local drive, please use UNC path and make sure server has
-- write access to your network share

exec @rc = sp_trace_create @TraceID output, 0, N'G:\work\tracelog\accesschk', @maxfilesize, NULL 
if (@rc != 0) goto error

-- Client side File and Table cannot be scripted

-- Set the events
declare @on bit
set @on = 1
exec sp_trace_setevent @TraceID, 114, 1, @on
exec sp_trace_setevent @TraceID, 114, 9, @on
exec sp_trace_setevent @TraceID, 114, 2, @on
exec sp_trace_setevent @TraceID, 114, 3, @on
exec sp_trace_setevent @TraceID, 114, 4, @on
exec sp_trace_setevent @TraceID, 114, 5, @on
exec sp_trace_setevent @TraceID, 114, 6, @on
exec sp_trace_setevent @TraceID, 114, 7, @on
exec sp_trace_setevent @TraceID, 114, 8, @on
exec sp_trace_setevent @TraceID, 114, 10, @on
exec sp_trace_setevent @TraceID, 114, 11, @on
exec sp_trace_setevent @TraceID, 114, 12, @on
exec sp_trace_setevent @TraceID, 114, 14, @on
exec sp_trace_setevent @TraceID, 114, 19, @on
exec sp_trace_setevent @TraceID, 114, 21, @on
exec sp_trace_setevent @TraceID, 114, 23, @on
exec sp_trace_setevent @TraceID, 114, 26, @on
exec sp_trace_setevent @TraceID, 114, 28, @on
exec sp_trace_setevent @TraceID, 114, 29, @on
exec sp_trace_setevent @TraceID, 114, 34, @on
exec sp_trace_setevent @TraceID, 114, 35, @on
exec sp_trace_setevent @TraceID, 114, 37, @on
exec sp_trace_setevent @TraceID, 114, 40, @on
exec sp_trace_setevent @TraceID, 114, 41, @on
exec sp_trace_setevent @TraceID, 114, 44, @on
exec sp_trace_setevent @TraceID, 114, 49, @on
exec sp_trace_setevent @TraceID, 114, 50, @on
exec sp_trace_setevent @TraceID, 114, 51, @on
exec sp_trace_setevent @TraceID, 114, 59, @on
exec sp_trace_setevent @TraceID, 114, 60, @on
exec sp_trace_setevent @TraceID, 114, 64, @on
exec sp_trace_setevent @TraceID, 131, 1, @on
exec sp_trace_setevent @TraceID, 131, 3, @on
exec sp_trace_setevent @TraceID, 131, 11, @on
exec sp_trace_setevent @TraceID, 131, 4, @on
exec sp_trace_setevent @TraceID, 131, 12, @on
exec sp_trace_setevent @TraceID, 131, 6, @on
exec sp_trace_setevent @TraceID, 131, 7, @on
exec sp_trace_setevent @TraceID, 131, 8, @on
exec sp_trace_setevent @TraceID, 131, 10, @on
exec sp_trace_setevent @TraceID, 131, 14, @on
exec sp_trace_setevent @TraceID, 131, 21, @on
exec sp_trace_setevent @TraceID, 131, 23, @on
exec sp_trace_setevent @TraceID, 131, 26, @on
exec sp_trace_setevent @TraceID, 131, 28, @on
exec sp_trace_setevent @TraceID, 131, 29, @on
exec sp_trace_setevent @TraceID, 131, 34, @on
exec sp_trace_setevent @TraceID, 131, 35, @on
exec sp_trace_setevent @TraceID, 131, 37, @on
exec sp_trace_setevent @TraceID, 131, 40, @on
exec sp_trace_setevent @TraceID, 131, 41, @on
exec sp_trace_setevent @TraceID, 131, 49, @on
exec sp_trace_setevent @TraceID, 131, 50, @on
exec sp_trace_setevent @TraceID, 131, 51, @on
exec sp_trace_setevent @TraceID, 131, 59, @on
exec sp_trace_setevent @TraceID, 131, 60, @on
exec sp_trace_setevent @TraceID, 131, 64, @on


-- Set the Filters
declare @intfilter int
declare @bigintfilter bigint

exec sp_trace_setfilter @TraceID, 34, 0, 6, N'Customer%'
exec sp_trace_setfilter @TraceID, 34, 1, 6, N'Employees'
-- Set the trace status to start
exec sp_trace_setstatus @TraceID, 1

-- display trace id for future references
select TraceID=@TraceID
goto finish

error: 
select ErrorCode=@rc

finish: 
go

クエリを実行します。

実行状態の確認

デフォルトでは、@maxfilesizeが5(MB)のサイズまで記録されると、トレースは停止します。

-- 現在収集中のトレース情報表示
SELECT * FROM :: fn_trace_getinfo(default)
GO

トレースを手動停止する場合

DECLARE @traceId INT
SET @traceId = 2    ← 上記で確認したtraceIDを指定する

-- トレース一時停止
EXEC sp_trace_setstatus @traceId, 0

-- トレース削除
EXEC sp_trace_setstatus @traceId, 2
GO

作成されたトレースファイルから、テーブルのアクセス状況を確認できます。


管理人 has written 30 articles