我有紧急情况
我写了一个登录触发器,用于禁用从黑客程序登录,但它阻止了我,没有任何用户无法登录数据库,我的触发器是
/****** Object: DdlTrigger [connection_limit_trigger] Script Date: 08/13/2011 08:43:04 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [connection_limit_trigger]
ON ALL SERVER
FOR LOGON
AS
BEGIN
IF EXISTS (SELECT row_count,* FROM sys.dm_exec_sessions
WHERE 1 = 1
AND (program_name NOT IN ('myappname', 'Microsoft Office 2003','Microsoft Office 2007','Report Server','Microsoft SQL Server' ))
AND (program_name NOT LIKE '%Microsoft SQL Server Management Studio%')
OR host_name is not null
)
BEGIN
ROLLBACK;
END;
END;
--DROP TRIGGER connection_limit_trigger ON ALL SERVER
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ENABLE TRIGGER [connection_limit_trigger] ON ALL SERVER
GO
现在我无法登录数据库可以删除sql上的所有触发器吗?有没有办法解决这个问题。
答案 0 :(得分:7)
如果我正确理解您的问题,由于您创建的LOGON触发器中的错误,您无法登录。
您可以在专用管理员连接(DAC)下删除(DROP)触发器。
sqlcmd -A -D master (as a sysadmin)
答案 1 :(得分:0)
对于未来,我建议你添加这样的东西。至少在你测试的时候。
IF IS_SRVROLEMEMBER('sysadmin', ORIGINAL_LOGIN()) = 1
OR ORIGINAL_LOGIN() = 'NT AUTHORITY\NETWORK SERVICE'
BEGIN
GOTO ERROREND
END
错误: - 接近触发器的结尾