共用方式為


記錄事件標識碼 4015,且 DNS 伺服器發生嚴重錯誤

本文有助於解決記錄事件標識碼 4015 且功能變數名稱服務 (DNS) 伺服器發生嚴重錯誤的問題。

原始 KB 編號: 969488、2733147

您在下列其中一個案例中收到事件識別碼 4015:

  • 如果您在只讀域控制器 (RODC) 上執行 DNS 角色,且無法存取可寫入的域控制器(裝載 DNS),則會在 RODC 上記錄下列事件。

    Log Name: DNS Server
    Source: Microsoft-Windows-DNS-Server-Service
    Date: date time
    Event ID: 4015
    Task Category: None
    Level: Error
    Keywords: Classic
    User: N/A
    Computer: <ComputerName>
    Description:
    The DNS server has encountered a critical error from the Active Directory. Check that the Active Directory is functioning properly. The extended error debug information (which may be empty) is "00002095: SvcErr: DSID-03210A6A, problem 5012 (DIR_ERROR), data 16". The event data contains the error.
    
  • DNS 伺服器無法存取 Active Directory 物件,而且下列事件經常記錄在 DNS 伺服器的事件記錄檔中。

    Type: Error
    Source: DNS
    Category: None
    Event ID: 4015
    Description:
    The DNS server has encountered a critical error from the Active Directory. Check that the Active Directory is functioning properly. The extended error debug information (which may be empty) is "0000051B: AttrErr: DSID-xxxx, #1: 0:0000051B: DSID-xxxx, problem 1005 (CONSTRAINT_ATT_TYPE), data 0, Att 20119(nTSecurityDescriptor)". The eventdata contains the error."
    
  • 在位於 Active Directory 整合功能變數名稱系統 (DNS) 區域的樹系或網域中,已安裝 DNS 伺服器角色的某些域控制器已升級和降級。 某些升級的域控制器無法在 Active Directory 整合 DNS 區域中註冊 SRV、主機 A、指標 (PTR) 或名稱伺服器 (NS),並記錄下列事件:

    The DNS server has encountered a critical error from the Active Directory. Check that the Active Directory is functioning properly. The extended error debug information (which may be empty) is "00002024: SvcErr: DSID-02050BBD, problem 5008 (ADMIN_LIMIT_EXCEEDED), data -1026". The event data contains the error.
    

RODC 每隔三分鐘記錄一次 DNS 事件識別碼 4015,錯誤碼00002095

當 RODC 找到可寫入的 DNS 伺服器以執行 ReplicateSingleObject (RSO), 它會執行 DSGETDC 函式,並設定下列旗標:

  • DS_AVOID_SELF
  • DS_TRY_NEXTCLOSEST_SITE
  • DS_DIRECTORY_SERVICE_6_REQUIRED
  • DS_WRITEABLE_REQUIRED

從 DSGETDC 呼叫傳回 DC 之後,它會使用結果來搜尋 DNS 中的 NS 記錄。 如果 DSGETDC 呼叫失敗或找不到從 DSGETDC 傳回之 DC 的 NS 記錄,則會記錄事件標識碼 4015。

事件標識碼 4015 的可能原因:

  • 無法存取可寫入的DC,或未從DSGETDC呼叫傳回。
  • DSGETDC 呼叫成功,但傳回的DC未安裝 DNS 伺服器角色,或未在 DNS 中註冊 NS 記錄。

您可以從 RODC 執行下列命令,以檢查從 DSGETDC 呼叫傳回的 DC:

nltest /dsgetdc: DOMAIN.COM /WRITABLE /AVOIDSELF /TRY_NEXT_CLOSEST_SITE /DS_6

其中 DOMAIN.COM 是您的功能變數名稱。

如需 DSGETDC 函式的詳細資訊,請參閱 DsGetDcNameA 函式

若要解決上述任一原因,請確定可從 RODC 存取可寫入 DC、該 DC 上安裝 DNS 伺服器角色,以及 NS 記錄已在 DNS 中註冊可寫入 DC。

事件標識碼 4015 會記錄錯誤碼 0000051B

發生此問題是因為許可權問題。 SYSTEM 不是 DNS 區域的擁有者。 您可以 啟用現場工程診斷記錄 ,以識別 DNS 區域並變更擁有者。

將 DNS 區域擁有者設定為 SYSTEM

若要解決此問題,請依照下列步驟執行︰

  1. 當您在啟用記錄之後再次在 DNS 伺服器事件記錄中看到 DNS 錯誤時,請將下列登錄值設定為 0 來停止 AD 診斷欄位工程記錄:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics\15 Field Engineering

  2. 將事件標識碼 4015 的確切時間與目錄服務事件標識碼 1644 相互關聯,並識別 DNS 應用程式目錄分割區。

  3. 開啟 ADSI Edit (Adsiedit.msc) 工具,然後移至事件標識碼 1644 中所識別物件的 LDAP 位置,這與事件標識碼 4015 相互關聯。

  4. 以滑鼠右鍵按兩下區域,移至 [屬性>安全性>進階],並確定擁有者已設定為 SYSTEM。

事件識別碼 4015 會記錄為擴充錯誤碼 (ADMIN_LIMIT_EXCEEDED)

當 DNS 伺服器服務達到 dnsRecord Active Directory 中物件的多重值屬性限制 dnsNode 時,就會發生此問題。 在 Active Directory 整合式 DNS 區域中,DNS 名稱會以dnsNode物件表示,而 DNS 記錄會儲存為物件屬性dnsNode中的dnsRecord值。 降級域控制器的 DNS 資源記錄不會從 dnsRecord 相關 Active Directory 分割區對應區域中的物件屬性 dnsNode 自動刪除。 例如:

DC=..TrustAnchors,CN=MicrosoftDNS,DC=ForestDnsZones,DC=xxx,DC=xxx

將其他記錄新增至 dnsRecord 對象的屬性 dnsNode 時,降級域控制器的孤立專案會導致ADMIN_LIMIT_EXCEEDED錯誤。

若要檢查每個分割區中目前記錄數目,請執行下列 repadmin 命令:

repadmin /showattr . "CN=MicrosoftDNS,CN=System,DC=contoso,DC=com" /subtree /filter:"(objectclass=dnsnode)" /atts:"dnsRecord" /allvalues >c:\temp\dns_Domain.txt
repadmin /showattr . "CN=MicrosoftDNS,DC=DomainDnsZones,DC=contoso,DC=com" /subtree /filter:"(objectclass=dnsnode)" /atts:"dnsRecord" /allvalues>c:\temp\dns_DomainDnsZones.txt
repadmin /showattr . "CN=MicrosoftDNS,DC=ForestDnsZones,DC=contoso,DC=com" /subtree /filter:"(objectclass=dnsnode)" /atts:"dnsRecord" /allvalues >c:\temp\dns_ForestDnsZones.txt

輸出會顯示對應 Active Directory 整合區域屬性中的 dnsRecord 目前項目數目。 例如:

DN: DC=@,DC=..TrustAnchors,CN=MicrosoftDNS,DC=ForestDnsZones,DC=contoso,DC=com
1280> dnsRecord: <48 byte blob>;

刪除已表示域控制器的孤立專案

若要解決此問題,請從區域移除所表示域控制器的所有孤立專案。 若要檢查並選擇性地刪除專案,請執行下列 Windows PowerShell Cmdlet:

Get-DnsServerResourceRecord -ZoneName trustanchors -RRType Ns
Remove-DnsServerResourceRecord -zonename trustanchors -RRType Ns -Name “@” -RecordData DC.contoso.com

如果您需要刪除單一主機的多個資源記錄 (RR),請執行下列 Cmdlet:

$AllNsRecords = Get-DnsServerResourceRecord -ZoneName “trustanchors” -RRType Ns
Foreach($Record in $AllNsRecords){
If($Record.recorddata.nameserver -like "*dc2*"){
$Record | Remove-DnsServerResourceRecord -ZoneName trustanchors
}
}
$AllSrvRecords = Get-DnsServerResourceRecord -ZoneName “_msdcs.contoso.com” -RRType Srv
Foreach($Record in $AllSrvRecords){
If($Record.recorddata.domainname -like "*dc2*"){
$Record | Remove-DnsServerResourceRecord -ZoneName _msdcs.contoso.com
}
}

使用 TroubleShootingScript 啟用偵錯記錄 (TSS)

若要使用 TSS 在 DNS 伺服器上啟動追蹤,請執行下列 Cmdlet:

.\TSS.ps1 -Scenario NET_DNSsrv -Mode Verbose -WaitEvent Evt:4015:'DNS Server'

注意

記錄事件標識碼 4015 之後,追蹤記錄會自動停止。

如需詳細資訊,請參閱 在連絡Microsoft支援之前收集重要資訊。