我想以某种方式保护我的SQL Server上的数据库在不输入密码的情况下被删除,即使是具有管理访问权限的人也是如此。有时数据库被意外删除(例如,当两个数据库具有相似的名称时),我想防止这是一个容易犯的错误。
我也对如何处理此问题的任何建议或其他想法持开放态度。谢谢!
答案 0 :(得分:0)
创建一个服务器级触发器,用于回滚任何删除数据库的尝试。
需要禁用触发器,然后重新启用以执行任何合法删除。
<ion-tabs>
<ion-tab [root]="tab1Root" tabIcon="tab1"></ion-tab>
<ion-tab [root]="tab2Root" tabIcon="tab2"></ion-tab>
</ion-tabs>
或作为一个过程:
在Master中创建一个包含数据库名称的单列一行表。
在表格中插入数据库的名称。
向触发器添加If语句,以检查被删除的数据库是否与步骤1中创建的表中的数据库相同。否则回滚。
在这种情况下,您无需禁用触发器。但是,您在定义数据库名称的过程中创建了2个点。
在服务器级别捕获数据库名称应该可以使用以下命令触发:
USE [master]
GO
CREATE TRIGGER [Trig_Prevent_Drop_Database] ON ALL SERVER
FOR DROP_DATABASE
AS
RAISERROR('Dropping of databases has been disabled on this server.', 16,1);
ROLLBACK;
GO
DISABLE TRIGGER [Trig_Prevent_Drop_Database] ON ALL SERVER
GO