ufo Asked: 2016-03-09 06:21:26 +0800 CST2016-03-09 06:21:26 +0800 CST 2016-03-09 06:21:26 +0800 CST MS SQL Server,在删除特定数据库之前询问密码 772 我有 2 个数据库,它们对我们的组织非常重要。我想防止意外删除/删除它们......你有什么建议吗?我正在考虑在执行删除之前询问密码。这在 MS SQL Server 中可能吗? sql-server password 2 个回答 Voted Remus Rusanu 2016-03-09T06:40:51+08:002016-03-09T06:40:51+08:00 正如评论所说,您应该依赖于此的权限。 严格来说,是不可能“问密码”的。密码对话框甚至会显示在哪里?SQL Server 是一种客户端服务器产品,它接受来自任何使用 TDS 协议的客户端的命令。这可能是 Management Studio、sqlcmd.exe、PowerShell 脚本、ADO.Net SqlClient 应用程序。任何事物。 如果必须,那么作为最后的手段,您可以部署DDL 触发器。DDL 触发器不会替换权限,但它可以防止意外删除。 CREATE TRIGGER safety ON SERVER FOR DROP_DATABASE AS PRINT 'You must disable Trigger "safety" to drop databases!' ROLLBACK; 您可以增强检查数据库名称的逻辑,我的目的不是给您复制粘贴工作代码。 Best Answer Duffy 2016-03-09T07:17:44+08:002016-03-09T07:17:44+08:00 通过共享具有所有权限的单个用户,您正在一个非常危险的安全环境中操作。最快的解决方案是撤销每个数据库共享帐户上的 DB_Owner,但保留 reader/writer/ddladmin/backupoperator/accessadmin。这将防止共享用户删除他们附加的任何数据库,但仍应控制这些特定数据库的所有内部结构。如果除了可以删除数据库的系统管理员帐户之外,您还需要一个用户,您可以单独创建它并仅在必要时使用它。
正如评论所说,您应该依赖于此的权限。
严格来说,是不可能“问密码”的。密码对话框甚至会显示在哪里?SQL Server 是一种客户端服务器产品,它接受来自任何使用 TDS 协议的客户端的命令。这可能是 Management Studio、sqlcmd.exe、PowerShell 脚本、ADO.Net SqlClient 应用程序。任何事物。
如果必须,那么作为最后的手段,您可以部署DDL 触发器。DDL 触发器不会替换权限,但它可以防止意外删除。
您可以增强检查数据库名称的逻辑,我的目的不是给您复制粘贴工作代码。
通过共享具有所有权限的单个用户,您正在一个非常危险的安全环境中操作。最快的解决方案是撤销每个数据库共享帐户上的 DB_Owner,但保留 reader/writer/ddladmin/backupoperator/accessadmin。这将防止共享用户删除他们附加的任何数据库,但仍应控制这些特定数据库的所有内部结构。如果除了可以删除数据库的系统管理员帐户之外,您还需要一个用户,您可以单独创建它并仅在必要时使用它。