2011-08-13 8 views
0

SQLサーバーによるログオントリガーにログインすることはできませんが、それは私をブロックされ、ユーザーのどれも私のトリガーがは私が</p> <p>は私がハッキングプログラムからのログインを無効にするためのログオントリガーを作成し、緊急事態を持って

あるデータベースをログオンすることはできません
/****** 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上のすべてのトリガーを削除できますか?この問題を解決する方法はありますか?

答えて

7

質問を正しく理解していれば、作成したLOGONトリガーのバグのためにログオンできません。

専用管理者接続(DAC)でトリガーを削除(DROP)できます。将来のために

sqlcmd -A -D master (as a sysadmin) 
+0

おかげで、私は、このコマンドを使用して接続ミッチ:sqlcmdの-S LocalHostという-dマスター-A と、このクエリを実行します。すべてのサーバー ON DROPトリガーconnection_limit_triggerそれは働いた – Rapunzo

+1

ニースの1つ:喜んで助けてください。 –

0

私はあなたがこのような何かを追加することをお勧めかもしれません。少なくともあなたがテストをしている間は。

IF IS_SRVROLEMEMBER('sysadmin', ORIGINAL_LOGIN()) = 1 
     OR ORIGINAL_LOGIN() = 'NT AUTHORITY\NETWORK SERVICE' 
     BEGIN 
      GOTO ERROREND 
     END 

ERROREND: - トリガーの終わり近く

関連する問題