これらのイベントの定義と根本原因を探していると想定します。
以下からの仕組み:SQL Server 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
通知時間は根本的な原因を明らかにするかもしれません。
エントリの日付/時刻が、次のようなエラーログのログイン失敗エントリと一致することがわかります。
「ユーザー「domain \ user」のログインに失敗しました。理由:インフラストラクチャエラーが発生したため、トークンベースのサーバーアクセス検証に失敗しました。以前のエラーを確認してください。[CLIENT:]エラー:18456重大度:14状態:11.」
以下からのトラブルシューティング特定のログインに失敗しましたエラーメッセージ (アーカイブ):
状態11は「ログインは有効ですがサーバーアクセスに失敗しました」に対応します。これは、ログインは有効ですが、インスタンスへのアクセスを許可する特定のセキュリティ権限がないことを示します。
- sys.server_principalsの出力を調べて、そのログインがSQL Serverログインの1つに直接マッピングされているかどうかを確認します。
- ログインがSQLインスタンスで使用可能なログインの1つに直接マッピングされている場合は、ログインのSIDがWindowsログインのSIDと一致しているかどうかを確認します。
ログインがWindows / ADレベルでドロップされて再度追加された場合、SQLがシステムカタログに保存したSIDと一致しない新しいSIDが取得され、失敗します。