所有服务器上的LOGON触发器限制新登录

时间:2018-05-10 10:23:23

标签: sql-server

Create TRIGGER Logon_Trigger_HOST_IP
ON ALL SERVER  FOR LOGON
AS
BEGIN
  INSERT INTO [master].[dbo].[IP_AND_HOST]
   --the auditing snippet below works fine in a 
  --login trigger, 
  --database trigger 
  --or any stored procedure.
    SELECT 

conn.session_ID as SPID,
conn.client_net_address as IPAddress,
sess.host_name as MachineName,
sess.program_name as ApplicationName,
login_name as LoginName
FROM sys.dm_exec_connections conn
inner join sys.dm_exec_sessions sess
on conn.session_ID=sess.session_ID

  END
GO

通过执行上述触发器,用户无法登录; sa或任何受限制的用户。

我想允许所有用户登录并记录他们的数据。 为什么限制用户登录login failed due to trigger...

1 个答案:

答案 0 :(得分:0)

可能是因为登录信息不允许INSERT进入表格[master].[dbo].[IP_AND_HOST]。结果,触发器失败,登录失败。

您需要在表guest中允许INSERT[master].[dbo].[IP_AND_HOST],或者将触发器更改为在可以使用{{1}的用户凭据下运行}:EXECUTE AS Clause (Transact-SQL)