1

如何编写创建新 SQL 登录的脚本(无论是通过 Windows 身份验证还是使用 SQL 密码)并让它在一段时间后自动过期,例如 8 小时、24 小时

我试过在 stackoverflow 中搜索,但没有找到解决方案。如果你们知道这里存在一个,也请告诉我。谢谢你。

我正在使用 SQL Server 2005 和 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 触发器来捕获和阻止特殊登录。 请注意,我专门测试了前缀XPR作为约定,因为如果您的 LOGON 触发器错误,修复起来很不方便。

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 回答