一種方式是與只有在所需的數據庫權限的帳戶連接。不是系統管理員,這是你現在正在做的。
如果你想爲系統管理員運行,該行添加到每個腳本
IF DB_NAME() = 'master'
RAISERROR ('Oi! Stop!', 20, 1) WITH LOG
GO
這將殺死連接
編輯這是正常的開發
:
我喜歡Quassnoi的解決方案,因爲它不需要系統管理員權限。 但是,您無法提供反饋或回覆。
所以,我一直在玩這個。它檢查最箱
有一個問題,一個SSMS USE(通過下拉)被忽略(按照Quassnoi的筆記),但它已經到了。任何人有更多的想法?
SET NOEXEC OFF;
GO
DECLARE @isOK bit;
BEGIN TRY
IF DB_NAME() IN ('master', 'protectedDB1', '...')
RAISERROR ('To Catch Block Only', 16, 1);
SET @isOK = 1;
END TRY
BEGIN CATCH
SET @isOK = 0;
RAISERROR ('Oi! Stop!', 16, 1);
END CATCH
IF @isOK = 0
SET NOEXEC ON;
GO
SELECT 1;
GO
來源
2011-08-05 09:54:09
gbn
+1:暴力,但有趣的解決方案! – Tao
+1,我見過的最佳錯誤訊息! ''喂!停止!'' –
+1但這是作弊:你不能提供一個有趣的信息給'SET NOEXEC ON'! – Quassnoi