Sql server 删除数据库的SQL Server警告

Sql server 删除数据库的SQL Server警告,sql-server,tsql,Sql Server,Tsql,如果在错误的SQL Server会话窗口中或使用错误的数据库名称执行,T-SQL中的DROP DATABASE命令可能会造成严重的伤害 这似乎是一个很好的情况,相当于旧的DOS“你确定吗?”警告 SQL Server中是否有任何设置可以对给定的数据库执行类似的操作?可能是DDL触发器,例如 ALTER TRIGGER DB_Drop_Warnning ON ALL SERVER FOR DROP_DATABASE AS DECLARE @DatabaseName NVARCHAR(100)

如果在错误的SQL Server会话窗口中或使用错误的数据库名称执行,T-SQL中的
DROP DATABASE
命令可能会造成严重的伤害

这似乎是一个很好的情况,相当于旧的DOS“你确定吗?”警告


SQL Server中是否有任何设置可以对给定的数据库执行类似的操作?

可能是DDL触发器,例如

ALTER TRIGGER DB_Drop_Warnning 
ON ALL SERVER 
FOR DROP_DATABASE
AS 
DECLARE @DatabaseName NVARCHAR(100),
        @eventData XML

SET @eventData = EVENTDATA()            
SELECT @DatabaseName = @eventData.value('(/EVENT_INSTANCE/DatabaseName)[1]','varchar(128)')

IF @DatabaseName IN ('TEST_DB1','TEST_DB2','TEST_DB3')  --<-- your database name(s) here 
  BEGIN
    PRINT 'Disable the trigger before you can drop the database.' 
    ROLLBACK;
  END
GO
现在,如果您尝试删除该数据库,它将抛出以下错误:

Disable the trigger before you can drop the database. 
Msg 3609, Level 16, State 2, Line 1 
The transaction ended in the trigger. The batch has been aborted.
如果要删除数据库,只需禁用触发器:

 DISABLE TRIGGER [DB_Drop_Warnning] ON ALL SERVER 
 GO

不。SQL中没有提示,最好不要有任何提示。唯一的安全设置是你的大脑-在开始删除数据库之前使用它!真的,如果他们需要警告,那就不要给他们权力。如何更改、截断、删除、更新等。。。?它停在哪里?没有备份也会造成巨大的伤害。@Steve:我不认为他要求的是“在SQL”或“在SQL Server”中的提示,而是SQL客户端(SSMS)中的提示(最有可能是)@a_horse_,其名称为:是。这就是我的想法。
 DISABLE TRIGGER [DB_Drop_Warnning] ON ALL SERVER 
 GO