拒绝所有用户访问数据库,但 sa/admin

-2 sql-server sql-server-2014

如何拒绝除 sa BY CODE 之外的所有用户访问数据库?我知道如何使用 management studio 中的界面来做到这一点,但我需要在脚本中使用它。

Han*_*non 6

我不愿意提供此代码,因为如果您没有“sa”密码,或者“sa”用户被禁用,或者不允许 SQL Server 登录,它可能会错误地拒绝所有人的访问.

以下代码将生成 T-SQL 语句以禁用不是“sa”用户的每个 Windows 用户、组和 SQL Server 登录的登录:

SELECT 'ALTER LOGIN ' + QUOTENAME(sp.name) + ' DISABLE;'
FROM sys.server_principals sp
WHERE sp.principal_id > 100
    AND sp.is_disabled = 0
    AND sp.type IN (
        'U' -- Windows user
        , 'G' -- Windows Group
        , 'S' -- SQL user
        );
Run Code Online (Sandbox Code Playgroud)

为了实际撤销对这些帐户的访问,您需要将结果复制并粘贴到新的命令窗口中并通过 F5 运行它们

我故意不添加代码来自动化最后一部分,因为这很容易被用来将自己锁定在 SQL Server 之外。如果你想自动化它,你可以搜索动态 SQL 和EXEC (@var).