sql >> データベース >  >> RDS >> Sqlserver

SQLServerでの特定のログインに対する同時ユーザーセッションの制限

    SQL Serverでは、ログオントリガーを使用して、ログインアクティビティの追跡、SQL Serverへのログインの制限、特定のログインのセッション数の制限など、サーバーセッションの監査と制御を行うことができます。

    この記事では、ログオントリガーを使用して、特定のログインの同時セッション数を制限する例を示します。

    これは、特定のログインの同時セッション数を1に制限するログオントリガーの例です。

    ログインを作成します:

    CREATE LOGIN Marge WITH PASSWORD = 'SQLServer123';
    GRANT VIEW SERVER STATE TO Marge;

    ログオントリガーを作成します:

    CREATE TRIGGER trg_limit_concurrent_sessions
    ON ALL SERVER WITH EXECUTE AS 'Marge'
    FOR LOGON  
    AS  
    BEGIN  
    IF ORIGINAL_LOGIN() = 'Marge' AND  
        (SELECT COUNT(*) FROM sys.dm_exec_sessions  
                WHERE is_user_process = 1 AND  
                    original_login_name = 'Marge') > 1
        ROLLBACK;  
    END;

    これで、そのユーザーが2番目の接続にログインしようとすると、次のエラーが発生するはずです。

    Error message: Logon failed for login 'Marge' due to trigger execution.
    Changed database context to 'master'.
    Changed language setting to us_english.

    エラーメッセージやPRINTからのメッセージなど、通常はユーザーに届くトリガー内で発生するすべてのメッセージに注意してください。 ステートメントは、SQLServerエラーログに転送されます。

    また、認証が失敗した場合、ログオントリガーは起動しません。


    1. .sql postgresqlバックアップから単一のテーブルを復元するにはどうすればよいですか?

    2. Oracleで外部キーを使用する方法

    3. ADO.netSqlTransactionはパフォーマンスを向上させます

    4. トップ7データベース