SQL Server 2012: Security_error_ring_buffer_recorded: ImpersonateSecurityContext

10

kilka serwerów, którymi zarządzam, rejestruje wiele zdarzeń w sesji system_health XE.

Kod błędu 5023 powinien mieć postać ( Kody błędów systemu ):

ERROR_INVALID_STATE    5023 (0x139F)

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

W dzienniku zabezpieczeń zdarzenia ani w dzienniku programu SQL Server nie ma żadnego zdarzenia logowania zakończonego niepowodzeniem.

Jens W.
źródło
Czy skontaktowałeś się ze wsparciem Microsoft lub otworzyłeś bilet? To wygląda na błąd wewnętrzny.
Jon Seigel
Jaki jest numer kompilacji twojej instancji i wersji systemu operacyjnego?
Jest to zwykły SQL 2012 z dodatkiem SP1: 11.00.3000.00. Chcę skontaktować się z pomocą techniczną MS, jak tylko będę mieć pewność, że nie jest to błąd w mojej konfiguracji. Liczę na opinie tutaj ...
Jens W.

Odpowiedzi:

4

Zakładam, że szukasz definicji i głównej przyczyny tych zdarzeń.

Z tego, jak to działa: SQL Server 2005 SP2 Security Ring Buffer - RING_BUFFER_SECURITY_ERROR ( archiwum ) :

SQL Server 2005 SP2 dodał nowe wpisy bufora pierścieniowego ( sys.dm_os_ring_buffers) dla różnych błędów bezpieczeństwa. Powodem, dla którego dodano wpisy bufora pierścieniowego, było dostarczenie DBA dodatkowych informacji na temat tego, dlaczego klient otrzymuje nieudane logowanie lub inny taki błąd.

Oświadczasz, że nie ma nieudanych wpisów logowania w dzienniku zdarzeń ani w dzienniku błędów. Zamiast tego możesz bezpośrednio wysłać zapytanie do tego bufora pierścieniowego:

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

Czas powiadomienia może rzucić nieco światła na pierwotną przyczynę.

Myślę, że przekonasz się, że data / czas wpisów będą zgodne z wpisami błędu logowania w dzienniku błędów podobnym do:

„Logowanie nie powiodło się dla użytkownika„ domena \ użytkownik ”. Przyczyna: Błąd dostępu do serwera opartego na tokenach nie powiódł się błąd infrastruktury. Sprawdź wcześniejsze błędy. [KLIENT:] Błąd: 18456 Poziom ważności: 14 Stan: 11.”

Z rozwiązywania problemów związanych z konkretnymi komunikatami o błędach logowania ( archiwum ) :

Stan 11 odpowiada „Nieprawidłowy login, ale błąd dostępu do serwera”, który wskazuje, że login jest prawidłowy, ale brakuje pewnych uprawnień bezpieczeństwa, które zapewniłyby mu dostęp do instancji.

  1. Sprawdź, czy ten login jest bezpośrednio zamapowany na jednym z loginów SQL Server, sprawdzając dane wyjściowe sys.server_principals.
  2. Jeśli login jest bezpośrednio odwzorowany na jedno z dostępnych loginów w instancji SQL, sprawdź, czy SID logowania odpowiada SID logowania Windows.

Jeśli ktoś upuści login na poziomie Windows / AD i doda go z powrotem, otrzyma nowy identyfikator SID, który nie będzie zgodny z identyfikatorem SID SQL zapisanym w katalogu systemowym i zakończy się niepowodzeniem.

stacylaray
źródło
1
Problemem jest: nowy serwer, wszystkie konta nowe i mogę się na nich zalogować. Ale jeszcze dziesiątki takich wydarzeń - bez wyraźnego / żadnego wpływu. Spróbuję jak najszybciej odczytać bufor pierścieniowy.
Jens W.
3
Widziałem to samo zachowanie na serwerach innych niż AD i nie są one związane z żadnymi błędami logowania lub innymi błędami. Po prostu loguje się w buforze pierścieni błędów bezpieczeństwa i zalewa system_health i nie ma innych powodów, dla których tak się dzieje.
Jonathan Kehayias