これらのテーブルがどのように作成されたかはわかりません。実行しているサードパーティまたは他のアプリケーションのコードを確認するか、仲間の開発者や DBA に、これらの特定のオブジェクトを何らかの理由で作成したかどうかを確認する必要があります。SQL Server は、指示しtempdb
ない限り、ユーザー テーブルを自動的に作成するだけではありません。
これらのテーブルが最近作成されたものであれば、デフォルト トレースでこれらのテーブルの作成者を見つけることができる場合があります。
DECLARE @path NVARCHAR(260);
SELECT
@path = REVERSE(SUBSTRING(REVERSE([path]),
CHARINDEX(CHAR(92), REVERSE([path])), 260)) + N'log.trc'
FROM sys.traces
WHERE is_default = 1;
SELECT ObjectName, HostName, ApplicationName, LoginName, StartTime
FROM sys.fn_trace_gettable(@path, DEFAULT) AS t
WHERE DatabaseName = N'tempdb'
AND ObjectName LIKE N't102523[_]%'
AND EventClass = 46 AND EventSubClass = 0
--AND EXISTS (SELECT 1 FROM tempdb.sys.tables WHERE name = t.ObjectName)
ORDER BY StartTime DESC;
運がない?ログを直接読んでみてください。
まだ運がない?データベースにユーザー テーブルが存在するかどうかを確認しmodel
、それらの犯人を追跡することをお勧めしmodel
ますtempdb
。
原因が見つからない場合は、サーバー側のトレースを実行して (Profiler でトレースを積極的に実行するのではなく)、キャプチャobject:created
して tempdb およびwhere name not like '#%';
. 拡張イベント、DDL トリガー、監査なども検討できます。