専用管理接続を使用したユーザーを見つける方法はありますか?
アクティブな接続ではなく、すでに閉じられている以前の接続ですか?
SQL Serverはこの情報をどこにも保持しません。誰かがDACを乱用しているのを捕まえようとしている場合は、システム管理者を明らかにすべきではない人々から遠ざけるか、少なくともそれらを捕らえるためにある種のポーリングメカニズムを設定します。あなたはこのようなテーブルを持つことができます:
CREATE TABLE dbo.DBA_DacAccess
(
ConnectTime datetime,
FirstObservance datetime2 NOT NULL DEFAULT SYSUTCDATETIME(),
LoginName sysname,
HostName sysname,
AppName sysname,
Interface nvarchar(32),
ClientNetAddress nvarchar(48)
);
そして、DAC接続に関する情報を収集するための適切な間隔を決定し、その頻度で(おそらくSQL Serverエージェントジョブを使用して)以下を実行します。
INSERT dbo.DBA_DacAccess
(
ConnectTime,
LoginName,
HostName,
AppName,
Interface,
ClientNetAddress
)
SELECT
c.connect_time,
s.login_name,
s.[Host_name],
s.[program_name],
s.client_interface_name,
c.client_net_address
FROM sys.dm_exec_connections AS c
INNER JOIN sys.dm_exec_sessions AS s
ON c.session_id = s.session_id
WHERE c.endpoint_id = 1
AND NOT EXISTS
(
SELECT 1 FROM dbo.DBA_DacAccess
WHERE connect_time = c.connect_time
);
これは今後も機能しますが、すぐに出入りする場合はラッキー(または頻繁にポーリング)でキャッチする必要があるため、スケジュールを微調整する必要があります。また、これがLOGON TRIGGER
ではない理由に疑問がある場合は、次の2つの理由があります。(1)DACが設計上および必要に応じてこれらをバイパスする、および(2)これらのDMVの行/データが存在しないとにかくトリガーを逃れるまで。
過去のイベントについて、そして運が良ければ、SSMSからDACにアクセスしようとすると、失敗した試行がエラーログに書き込まれるため、SSMSからDACにアクセスしようとすると、バックグラウンド接続に噛まれてしまいます。メッセージの最後にIPアドレスが追加されます(ただし、他の情報は含まれません)。これは、誰かがサーバーに対してリモートデスクトップを使用した場合、または同じADMIN:
資格情報を使用して追加の接続を確立しようとしないSSMS以外のアプリを使用した場合は役に立ちませんが、SSMSをリモートで使用した場合は役立つはずです。
2018年4月23日08:11:18
ログオン
わからない
最大数の「1」の専用管理者接続がすでに存在するため、接続できませんでした。新しい接続を行う前に、ログオフするかプロセスを終了することにより、既存の専用管理者接続をドロップする必要があります。 [クライアント:192.168.0.99]