如何解决如果ELSE行为不正确
我需要编写一个触发器来限制用户可以访问数据库的时间,并在用户访问数据库时将其记录下来。用户只能在几个小时后登录。我现在的问题是,无论用户什么时候登录,我的代码都会把用户踢出去。我能得到的任何帮助都将受到赞赏。
IF((@LOGIN_ID LIKE 'Admin_%')
AND
((DATEPART(HOUR,GETDATE()) BETWEEN 8 AND 16)))
BEGIN
ROLLBACK
END
ELSE IF ((@LOGIN_ID LIKE 'Admin_%')
AND
((DATEPART(HOUR,GETDATE()) BETWEEN 17 AND 24)
OR
(DATEPART(HOUR,GETDATE()) BETWEEN 0 AND 7)
))
编辑所有触发代码
CREATE OR ALTER TRIGGER [Trg_TrackLogon]
ON ALL SERVER
FOR LOGON
AS
BEGIN
DECLARE @LOGIN_ID VARCHAR(30)
SET @LOGIN_ID = ORIGINAL_LOGIN()
DECLARE @MailSubject VARCHAR(100)
DECLARE @MailBody VARCHAR(200)
SET @MailSubject = 'Admin Account ' + @LOGIN_ID + ' Logged On'
SET @MailBody = 'The user ' + @LOGIN_ID + ' has logged onto the server ' + @@SERVERNAME + '.'
IF((@LOGIN_ID LIKE 'Admin_%')
AND
((DATEPART(HOUR,GETDATE()) BETWEEN 17 AND 24)))
BEGIN
ROLLBACK
END
ELSE
BEGIN
INSERT INTO DBA_Local.dbo.Logon_Tracker
(
UserLogon,LogonTime
)
VALUES
(
@LOGIN_ID,GETDATE()
)
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'HlpDskLogon',@recipients = 'john.doe@someurl.com',@subject = @MailSubject,@body = @MailBody,@body_format = 'HTML'
END
END
出于测试目的,小时范围更改为17-24。使用上面的值,因为它是09:16,所以我无法登录数据库。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。