有时候我们需要记录谁登陆过我们的服务器,来确定一些信息,我们可以使用触发器来实现,参考文档:登录触发器 新建日志表: CREATE TABLE TBLOG
(
ID INT NOT NULL IDENTITY(1, 1) ,
EVTIME DATETIME NOT NULL DEFAULT ( GETDATE() ) , --访问时间
USERID VARCHAR(128) NOT NULL DEFAULT ( SUSER_SNAME() ) , --连接的时候使用的哪个SQL登陆用户
HOSTNAME VARCHAR(128) NOT NULL DEFAULT ( HOST_NAME() ) , --客户端的机器名
APPNAME VARCHAR(128)NOT NULL DEFAULT ( APP_NAME()) --是从查询分析器,还是应用程序来执行的
)
新建触发器: CREATE TRIGGER connection_limit_trigger
ON ALL SERVER
FOR LOGON
AS
BEGIN
DECLARE @USERID VARCHAR(128) , --连接的时候使用的哪个SQL登陆用户
@HOSTNAME VARCHAR(128) , --客户端的机器名
@APPNAME VARCHAR(128) --是从查询分析器,还是应用程序来执行的
SELECT @USERID = LOGINAME , --连接的时候使用的哪个SQL登陆用户
@HOSTNAME = HOSTNAME , --客户端的机器名
@APPNAME = PROGRAM_NAME --是从查询分析器,还是应用程序来执行的
FROM MASTER..SYSPROCESSES
WHERE SPID = @@SPID
INSERT TBLOG
(
USERID ,
HOSTNAME ,
APPNAME
)
VALUES(
@USERID ,
@HOSTNAME ,
@APPNAME)
END;
登录测试: SELECT * FROM TBLOG
结果: 
当然我们也可以像参考文档那样,实现限制某个登录名登录的功能。 |