如何保护SQL Server数据库免遭意外删除?

时间:2018-05-21 15:22:11

标签: sql-server database

我想以某种方式保护我的SQL Server上的数据库在不输入密码的情况下被删除,即使是具有管理访问权限的人也是如此。有时数据库被意外删除(例如,当两个数据库具有相似的名称时),我想防止这是一个容易犯的错误。

我也对如何处理此问题的任何建议或其他想法持开放态度。谢谢!

1 个答案:

答案 0 :(得分:0)

创建一个服务器级触发器,用于回滚任何删除数据库的尝试。

需要禁用触发器,然后重新启用以执行任何合法删除。

<ion-tabs>
  <ion-tab [root]="tab1Root" tabIcon="tab1"></ion-tab>
  <ion-tab [root]="tab2Root" tabIcon="tab2"></ion-tab>
</ion-tabs>

或作为一个过程:

  1. 在Master中创建一个包含数据库名称的单列一行表。

  2. 在表格中插入数据库的名称。

  3. 向触发器添加If语句,以检查被删除的数据库是否与步骤1中创建的表中的数据库相同。否则回滚。

  4. 在这种情况下,您无需禁用触发器。但是,您在定义数据库名称的过程中创建了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