如何编写创建新 SQL 登录的脚本(无论是通过 Windows 身份验证还是使用 SQL 密码)并让它在一段时间后自动过期,例如 8 小时、24 小时
我试过在 stackoverflow 中搜索,但没有找到解决方案。如果你们知道这里存在一个,也请告诉我。谢谢你。
我正在使用 SQL Server 2005 和 2008
如何编写创建新 SQL 登录的脚本(无论是通过 Windows 身份验证还是使用 SQL 密码)并让它在一段时间后自动过期,例如 8 小时、24 小时
我试过在 stackoverflow 中搜索,但没有找到解决方案。如果你们知道这里存在一个,也请告诉我。谢谢你。
我正在使用 SQL Server 2005 和 2008
首先创建一个表来存储自动过期的登录信息
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());