Sql-Server
有沒有辦法擷取 dbcc checkident 命令
我的一位同事注意到為插入的項目生成了不正確的 ID。最可能的原因:某些腳本發出如下命令:
dbcc checkident('dbo.table', reseed, 1)
我曾考慮設置一個 DDL 觸發器來擷取此命令,但此DDL 事件列表似乎不包含與重新播種相關的任何內容。
**問題:**有沒有辦法以類似的方式擷取此類命令 DDL 觸發器擷取各種數據庫模式更改?
當然,這些是由預設跟踪擷取的(可能是通過擴展事件 system_health 會話,不確定)。鑑於此答案中的警告(例如,去年發布的命令不太可能仍然存在於跟踪中):
您可以在此處查看最近的 DBCC 事件:
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 TextData, ApplicationName, LoginName, StartTime, DatabaseName FROM sys.fn_trace_gettable(@path, DEFAULT) WHERE EventClass = 116 --AND DatabaseName = DB_NAME() / or constant ORDER BY StartTime DESC;
請注意,這將不僅僅顯示
CHECKIDENT
事件,但您可以進一步過濾。另一方面,抽查其他 DBCC 命令是否正在執行(或未執行)可能會很有用。