SQL Server 2012: Security_error_ring_buffer_recorded: ImpersonateSecurityContext

10

Einige von mir verwaltete Server zeichnen viele Ereignisse in der system_health XE-Sitzung auf.

Der Fehlercode 5023 sollte lauten ( Systemfehlercodes ):

ERROR_INVALID_STATE    5023 (0x139F)

The group or resource is not in the correct state to perform the requested operation.

Ich habe weder im Ereignissicherheitsprotokoll noch im SQL Server-Protokoll ein fehlgeschlagenes Anmeldeereignis.

Jens W.
quelle
Haben Sie den Microsoft-Support kontaktiert oder ein Ticket geöffnet? Dies sieht nach einem internen Fehler aus.
Jon Seigel
Wie lautet die Build-Nummer Ihrer Instanz und Betriebssystemversion?
Es ist ein einfaches SQL 2012 mit SP1: 11.00.3000.00. Ich möchte den MS-Support kontaktieren, sobald ich sicher bin, dass es sich nicht um einen Fehler in meinem Setup handelt. Ich hoffe auf Feedback hier ...
Jens W.

Antworten:

4

Ich gehe davon aus, dass Sie nach der Definition und der Grundursache dieser Ereignisse suchen.

Von Wie es funktioniert: SQL Server 2005 SP2 Sicherheitsringpuffer - RING_BUFFER_SECURITY_ERROR ( Archiv ) :

SQL Server 2005 SP2 hat neue Ringpuffereinträge ( sys.dm_os_ring_buffers) für verschiedene Sicherheitsfehler hinzugefügt . Der Grund, warum die Ringpuffereinträge hinzugefügt wurden, bestand darin, dem DBA weitere Details darüber bereitzustellen, warum ein Client eine fehlgeschlagene Anmeldung oder einen anderen solchen Fehler erhält.

Sie geben an, dass Sie weder im Ereignisprotokoll noch im Fehlerprotokoll fehlgeschlagene Anmeldeeinträge haben. Stattdessen können Sie diesen Ringpuffer direkt abfragen:

SELECT CONVERT (varchar(30), GETDATE(), 121) as runtime,
dateadd (ms, (a.[Record Time] - sys.ms_ticks), GETDATE()) as [Notification_Time],
a.* , sys.ms_ticks AS [Current Time]
FROM
(SELECT
x.value('(//Record/Error/ErrorCode)[1]', 'varchar(30)') AS [ErrorCode],
x.value('(//Record/Error/CallingAPIName)[1]', 'varchar(255)') AS [CallingAPIName],
x.value('(//Record/Error/APIName)[1]', 'varchar(255)') AS [APIName],
x.value('(//Record/Error/SPID)[1]', 'int') AS [SPID],
x.value('(//Record/@id)[1]', 'bigint') AS [Record Id],
x.value('(//Record/@type)[1]', 'varchar(30)') AS [Type],
x.value('(//Record/@time)[1]', 'bigint') AS [Record Time]
FROM (SELECT CAST (record as xml) FROM sys.dm_os_ring_buffers
WHERE ring_buffer_type = 'RING_BUFFER_SECURITY_ERROR') AS R(x)) a
CROSS JOIN sys.dm_os_sys_info sys
ORDER BY a.[Record Time] ASC

Die Benachrichtigungszeit kann Aufschluss über die Grundursache geben.

Ich denke, Sie werden feststellen, dass das Datum und die Uhrzeit der Einträge mit Anmeldefehlern im Fehlerprotokoll übereinstimmen, ähnlich wie:

"Anmeldung für Benutzer 'Domäne \ Benutzer' fehlgeschlagen. Grund: Token-basierte Serverzugriffsüberprüfung mit einem Infrastrukturfehler fehlgeschlagen. Auf vorherige Fehler prüfen. [CLIENT:] Fehler: 18456 Schweregrad: 14 Status: 11."

Von Fehlerbehebung bei bestimmten Anmeldefehlern Fehlermeldung ( Archiv ) :

Status 11 entspricht "Gültige Anmeldung, aber Serverzugriffsfehler". Dies zeigt an, dass die Anmeldung gültig ist, jedoch bestimmte Sicherheitsberechtigungen fehlen, die den Zugriff auf die Instanz gewähren würden.

  1. Überprüfen Sie, ob diese Anmeldung direkt einer der SQL Server-Anmeldungen zugeordnet ist, indem Sie in der Ausgabe von sys.server_principals nachsehen.
  2. Wenn die Anmeldung direkt einer der verfügbaren Anmeldungen in der SQL-Instanz zugeordnet ist, überprüfen Sie, ob die SID der Anmeldung mit der SID der Windows-Anmeldung übereinstimmt.

Wenn jemand die Anmeldung auf Windows / AD-Ebene gelöscht und wieder hinzugefügt hat, erhält er eine neue SID, die nicht mit der in seinem Systemkatalog gespeicherten SID SQL übereinstimmt, und schlägt fehl.

Stacylaray
quelle
1
Das Problem ist: neuer Server, alle Konten neu und ich kann mich mit ihnen anmelden. Aber dennoch Dutzende solcher Ereignisse - ohne klare Auswirkungen. Ich werde versuchen, den Ringpuffer so schnell wie möglich auszulesen.
Jens W.
3
Ich habe dasselbe Verhalten auf Nicht-AD-Servern gesehen und sie sind nicht mit Anmeldefehlern oder anderen Fehlern verbunden. Es meldet sich nur im Sicherheitsfehler-Ringpuffer an und überflutet system_health und keine anderen Gründe, warum es auftritt.
Jonathan Kehayias