SQL Server 2012: Security_error_ring_buffer_recorded: ImpersonateSecurityContext


10

quelques serveurs que je gère enregistrent de nombreux événements dans la session system_health XE.

Le code d'erreur 5023 doit être ( Codes d'erreur système ):

ERROR_INVALID_STATE    5023 (0x139F)

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

Je n'ai aucun événement de connexion échoué dans le journal de sécurité des événements, ni dans le journal SQL Server.


Avez-vous contacté le support Microsoft ou ouvert un ticket? Cela ressemble à une erreur interne.
Jon Seigel

Quel est le numéro de build de votre instance et de la version du système d'exploitation?

Il s'agit d'un SQL 2012 simple avec SP1: 11.00.3000.00. Je souhaite contacter le support MS dès que je suis sûr que ce n'est pas une erreur dans ma configuration. En espérant des commentaires ici ...
Jens W.

Réponses:


4

Je vais supposer que vous recherchez la définition et la cause profonde de ces événements.

De la façon dont cela fonctionne: tampon d'anneau de sécurité SQL Server 2005 SP2 - RING_BUFFER_SECURITY_ERROR ( archive ) :

SQL Server 2005 SP2 a ajouté de nouvelles entrées de tampon en anneau ( sys.dm_os_ring_buffers) pour diverses erreurs de sécurité. La raison pour laquelle les entrées du tampon en anneau ont été ajoutées était de fournir au DBA plus de détails sur la raison pour laquelle un client reçoit une connexion échouée ou une autre erreur de ce type.

Vous déclarez qu'aucune entrée de connexion n'a échoué dans le journal des événements ni dans le journal des erreurs. Au lieu de cela, vous pouvez interroger ce tampon en anneau directement:

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

Le délai de notification peut éclairer la cause première.

Je pense que vous constaterez que la date / heure des entrées s'alignera avec les entrées d'échec de connexion dans le journal des erreurs similaires à:

"Échec de la connexion pour l'utilisateur 'domaine \ utilisateur'. Raison: la validation de l'accès au serveur basé sur les jetons a échoué avec une erreur d'infrastructure. Vérifiez les erreurs précédentes. [CLIENT:] Erreur: 18456 Gravité: 14 État: 11."

À partir du dépannage des messages d'erreur d'échec de connexion spécifiques ( archive ) :

L'état 11 correspond à «Connexion valide mais échec d'accès au serveur» qui indique que la connexion est valide mais qu'il manque certains privilèges de sécurité qui lui permettraient d'accéder à l'instance.

  1. Vérifiez si cette connexion est directement mappée à l'une des connexions SQL Server en consultant la sortie de sys.server_principals.
  2. Si la connexion est directement mappée à l'une des connexions disponibles dans l'instance SQL, vérifiez si le SID de la connexion correspond au SID de la connexion Windows.

Si quelqu'un abandonne la connexion au niveau Windows / AD et l'ajoute à nouveau, il obtiendra un nouveau SID qui ne correspondra pas au SID que SQL a stocké dans son catalogue système et il échouera.


1
Le problème est: nouveau serveur, tous les comptes sont nouveaux et je peux me connecter avec eux. Mais pourtant, des dizaines de ces événements - sans impact clair / aucun. Je vais essayer de lire le tampon en anneau dès que possible.
Jens W.28

3
J'ai vu ce même comportement sur des serveurs non-AD et ils ne sont associés à aucun échec de connexion ou autre erreur. Il se connecte simplement dans le tampon d'anneau d'erreur de sécurité et inonde system_health et aucune autre raison pour laquelle cela se produit.
Jonathan Kehayias
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.