1

新しいSQLログインの作成をスクリプト化して(Windows認証またはSQLパスワードを使用して)、しばらくすると自動的に期限切れになるようにするにはどうすればよいですか(8時間、24時間など)。

ここでstackoverflowで検索しようとしましたが、解決策が見つかりませんでした。ここにあるものを知っているなら、私にも知らせてください。ありがとうございました。

SQLServer2005および2008を使用しています

4

1 に答える 1

1

まず、自動期限切れのログインを保存するためのテーブルを作成します

create table master.dbo.logins(
    id int identity primary key clustered,
    login_name sysname not null unique,
    valid_from datetime not null,
    valid_to datetime not null,
    check (valid_from < valid_to)
)
GO

SERVER LEVEL LOGONトリガーを作成して、特別なログインをキャプチャしてブロックします。 LOGONトリガーを間違えると、修正するのが不便になるため、慣例としてプレフィックスを特別にテストしていることに注意してください。XPR

CREATE TRIGGER deny_expired_logins
ON ALL SERVER
with execute as 'sa'
FOR LOGON
AS
BEGIN
    if original_login() like 'XPR%' and not exists (
        select *
          from master.dbo.logins
        where login_name = original_login()
          and GETDATE() between valid_from and valid_to)
        rollback
END
GO

新しいログインを作成する必要がある場合は、テーブルにレコードを挿入することを忘れないでください。

create login XPR00001 with password = 'ABCD1234..';
insert master.dbo.logins select 'XPR00001', getdate(), dateadd(hh,8,getdate());
于 2012-11-01T00:53:25.720 に答える