一种方式是与只有在所需的数据库权限的帐户连接。不是系统管理员,这是你现在正在做的。
如果你想为系统管理员运行,该行添加到每个脚本
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