Sql-Server

有沒有辦法擷取 dbcc checkident 命令

  • February 22, 2017

我的一位同事注意到為插入的項目生成了不正確的 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 命令是否正在執行(或未執行)可能會很有用。

引用自:https://dba.stackexchange.com/questions/165084