SQL Server 2012: Security_error_ring_buffer_recorded: ImpersonateSecurityContext

10

beberapa server yang saya kelola merekam banyak acara di sesi system_health XE.

Error_code 5023 seharusnya ( Kode Kesalahan Sistem ):

ERROR_INVALID_STATE    5023 (0x139F)

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

Saya tidak memiliki acara masuk yang gagal dalam log keamanan acara, atau dalam log SQL Server.

Jens W.
sumber
Sudahkah Anda menghubungi dukungan Microsoft atau membuka tiket? Ini terlihat seperti kesalahan internal.
Jon Seigel
Berapa nomor versi instans dan OS Anda?
Ini adalah SQL 2012 polos dengan SP1: 11.00.3000.00. Saya ingin menghubungi Dukungan MS segera setelah saya yakin itu bukan kesalahan dalam pengaturan saya. Berharap untuk umpan balik di sini ...
Jens W.

Jawaban:

4

Saya akan menganggap Anda mencari definisi dan akar penyebab dari peristiwa ini.

Dari Cara Kerjanya: Penyangga Cincin Keamanan SQL Server 2005 SP2 - RING_BUFFER_SECURITY_ERROR ( arsip ) :

SQL Server 2005 SP2 menambahkan entri buffer cincin baru ( sys.dm_os_ring_buffers) untuk berbagai kesalahan keamanan. Alasan entri buffer cincin ditambahkan adalah untuk memberikan DBA dengan lebih detail mengapa klien menerima login gagal atau kesalahan serupa lainnya.

Anda menyatakan bahwa Anda tidak memiliki entri login yang gagal di log peristiwa atau di log kesalahan. Alih-alih, Anda dapat meminta buffer cincin ini secara langsung:

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

Waktu notifikasi mungkin menjelaskan beberapa penyebab root.

Saya pikir Anda akan menemukan bahwa tanggal / waktu entri akan berbaris dengan entri kegagalan masuk di errorlog mirip dengan:

"Gagal masuk untuk 'domain \ pengguna' pengguna. Alasan: Validasi akses server berbasis Token gagal dengan kesalahan infrastruktur. Periksa kesalahan sebelumnya. [KLIEN:] Kesalahan: 18456 Severity: 14 State: 11."

Dari Memecahkan Masalah Login spesifik pesan kesalahan ( arsip ) :

Negara 11 terkait dengan " Login yang sah tetapi kegagalan akses server" yang menunjukkan bahwa login itu sah tetapi tidak memiliki hak keamanan tertentu yang akan memberikannya akses ke instance.

  1. Periksa apakah login tersebut secara langsung dipetakan ke salah satu login SQL Server dengan melihat output dari sys.server_principals.
  2. Jika login secara langsung dipetakan ke salah satu login yang tersedia dalam contoh SQL, kemudian periksa apakah SID dari login cocok dengan SID dari Windows Login.

Jika seseorang menjatuhkan login pada level Windows / AD, dan menambahkannya kembali, itu akan mendapatkan SID baru yang tidak akan cocok dengan SID SQL yang telah disimpan dalam katalog sistemnya dan itu akan gagal.

stacylaray
sumber
1
Masalahnya adalah: server baru, semua akun baru dan saya bisa masuk dengannya. Namun puluhan peristiwa seperti itu - tanpa dampak yang jelas / apa pun. Saya akan mencoba membaca buffer cincin sesegera mungkin.
Jens W.
3
Saya telah melihat perilaku yang sama pada server non-AD dan mereka tidak terkait dengan kegagalan masuk atau kesalahan lainnya. Itu hanya masuk dalam buffer cincin kesalahan keamanan dan membanjiri system_health dan tidak ada alasan lain mengapa itu terjadi.
Jonathan Kehayias