ログインがWindows認証またはSQL Server認証の場合、SQL ServerデータベースにどのOSユーザーがログインするかを確認する必要があります。どのアプリケーションでSQL Serverにログインしたdbアカウントを使用するかは、WHO(クライアントPCのADアカウント)を使用する必要があります。SQL ServerからクライアントOSのユーザー名を取得
問題は、ときに、SQL Serverの認証ユーザーがログイン中に、私は、クライアントのOSのユーザー名を取得できませんでしたです。
たとえば、私はlaptop123、ラップトップ上で、私のADアカウントのドメイン名を使用していました。ドメイン名はStackoverflow
、ユーザー名はdeveloper1
、Microsoft SQL Server Management Studioを起動し、DBアカウント(SQL Server認証)ERPAPPUSER
に接続しました。ドメインユーザーStackoverflow/developer1
を記録する必要があります。
ユーザーERPAPPUSER
は、Microsoft SQL Server Management Studioを使用してlaptop123
から簡単にログインできます。
データベースのログオントリガーを作成して、クライアントのユーザー名、ホスト名、ログオン時刻、アプリケーション名などを取得できましたが、クライアントのOSユーザー名を取得できませんでした。
CREATE TRIGGER DB_ServerLogon
ON ALL SERVER
WITH EXECUTE AS 'sa'
FOR LOGON
AS
BEGIN
INSERT INTO audit_history.dbo.db_logon_history
SELECT
ORIGINAL_DB_NAME(),
ORIGINAL_LOGIN(),
@@SPID,GETDATE(),
HOST_NAME(),
APP_NAME()
END
GO
多くの感謝!
- 'WITH EXECUTE AS'を ''として追加します。それ以外の場合は、db_logon_historyにアクセスできないユーザーはログインできません。
フェルナンド、SQL Serverにログオンすると、ドメインアカウントでログオンしていないため、ドメインアカウントはSQL Serverに渡されません。どんな種類のデバイスでもログオンできます。信頼できるセキュリティを使用するときにクライアントの詳細をSQL Serverに渡す場合は、フロントエンドからパラメータとして渡す必要があります。ストアドプロシージャまたは同様のものを使用する。途中で良い質問。とよく尋ねた。 – cameront