KB4052136 - 修正:SQL Server稽核事件不會寫入安全性記錄檔

Applies To
SQL Server 2016 SQL Server 2019 on Windows (all editions) SQL Server 2022 on Windows (all editions)

症狀

假設您在 Microsoft SQL Server 2022、Microsoft SQL Server 2019 或 Microsoft SQL Server 2016 Service Pack 2 (SP2) 中設定了多個 SQL Server 稽核事件來寫入安全性記錄。 在此案例中,您會注意到除了第一個伺服器稽核之外的所有伺服器稽核都不會寫入。 此外,當您新增第二個伺服器稽核時,您可能會收到類似於 SQL Server 錯誤記錄檔中下列訊息的錯誤訊息:

注意

  • 錯誤:33204,嚴重性:17,狀態:1。
  • SQL Server 稽核無法寫入安全性記錄。

原因

如果登錄事件來源旗標設定為 0,就會發生此問題。

因應措施

請使用下列方法之一解決此問題:

  • 將伺服器稽核事件設定為寫入檔案,而不是 SQL Server 安全性記錄。

  • 若要啟用多個伺服器稽核事件寫入 SQL Server 安全性記錄,請將下列登錄子機碼的值從 0 變更為 1:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Security\MSSQL$<InstanceName>$Audit\EventSourceFlags

注意:必須重新啟動伺服器稽核,新的登錄設定才能生效。

ALTER SERVER AUDIT [AuditName] WITH (STATE = OFF)
GO
ALTER SERVER AUDIT [AuditName] WITH (STATE = ON)
GO

重要

錯誤編輯登錄可能會嚴重損壞您的系統。 在您變更登錄之前,我們建議您先備份電腦上所有的重要資料。

解決方式

此問題已在下列 SQL Server 累積更新中修正:

注意: 即使在為現有執行個體安裝 SQL Server 2022 累積更新 6 (CU6) 或更新版本之後,仍然需要因應措施,因為修正程式不會變更現有的登錄值。 針對新的執行個體,在套用修正程式之後,將會使用正確的登錄值。

關於 SQL Server 的累積更新

SQL Server 的每個新累積更新都包含前一個組建中的所有 Hotfix 和安全性修正程式。 建議您安裝適用於您 SQL Server 版本的最新組建:

SQL Server 2016 的 Service Pack 資訊

此問題已在下列 SQL Server Service Pack 中修正:

適用於 SQL Server 2016 的 Service Pack 2

關於 SQL Server Service Pack:

Service Pack 是累積性的。 每個新版 Service Pack 都包含前一版 Service Pack 中所有的修正程式,以及任何新增的修正程式。 我們的建議是套用最新的 Service Pack 和該 Service Pack 的最新累積更新。 所以在安裝最新版的 Service Pack 之前,您不需要安裝前一版的 Service Pack。 使用下列文章中的「表 1」,尋找有關最新 Service Pack 和最新累積更新的詳細資訊。

如何判斷 SQL Server 及其元件的版本、版次及更新層級

狀態

Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。

參考資料

了解 Microsoft 用來說明軟體更新的術語。