이 이벤트의 정의와 근본 원인을 찾고 있다고 가정하겠습니다.
에서 이용 방법 : SQL 서버 2005 SP2 보안 링 버퍼 - RING_BUFFER_SECURITY_ERROR ( 아카이브 ) :
SQL Server 2005 SP2 sys.dm_os_ring_buffers
에는 다양한 보안 오류에 대한 새로운 링 버퍼 항목 ( )이 추가되었습니다 . 링 버퍼 항목이 추가 된 이유는 클라이언트가 로그인 실패 또는 기타 오류를 수신 한 이유에 대한 자세한 정보를 DBA에 제공하기위한 것입니다.
이벤트 로그 나 오류 로그에 로그인 항목이 실패하지 않았 음을 나타냅니다. 대신이 링 버퍼를 직접 쿼리 할 수 있습니다.
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
알림 시간은 근본 원인을 밝힐 수 있습니다.
항목의 날짜 / 시간이 다음과 유사한 오류 로그의 로그인 실패 항목과 일치한다는 것을 알 수 있습니다.
"사용자 '도메인 \ 사용자'에 대한 로그인 실패. 이유 : 인프라 오류로 인해 토큰 기반 서버 액세스 유효성 검증에 실패했습니다. 이전 오류를 확인하십시오. [CLIENT :] 오류 : 18456 심각도 : 14 상태 : 11"
특정 로그인 실패 오류 메시지 ( 아카이브 ) 문제 해결 에서 :
상태 11은 "유효한 로그인이지만 서버 액세스 실패" 에 해당합니다. 이는 로그인이 유효하지만 인스턴스에 대한 액세스 권한을 부여하는 특정 보안 권한이 없음을 나타냅니다.
- sys.server_principals의 출력을 확인하여 로그인이 SQL Server 로그인 중 하나에 직접 매핑되었는지 확인하십시오.
- 로그인이 SQL 인스턴스에서 사용 가능한 로그인 중 하나에 직접 맵핑 된 경우 로그인의 SID가 Windows 로그인의 SID와 일치하는지 확인하십시오.
누군가가 Windows / AD 수준에서 로그인을 삭제 한 후 다시 추가하면 SID SQL이 시스템 카탈로그에 저장된 SID SQL과 일치하지 않는 새 SID를 얻게되며 실패합니다.