开发者社区 问答 正文

SQL Server Management Studio拒绝对所有数据库的视图访问,但是该用户有权

我正在使用SQL Server 2014/2016。是否可以拒绝用户查看对所有数据库的访问权限,但拒绝他们有权访问的数据库却没有成为用户所有者?

我不希望用户具有所有者权限,而是要向数据库中添加多个用户。

DENY VIEW ANY DATABASE TO userName
ALTER AUTHORIZATION ON DATABASE:: [DbName] TO userName

展开
收起
心有灵_夕 2019-12-02 22:42:22 794 分享 版权
阿里云 AI 助理回答

在SQL Server 2014/2016中,您可以通过执行特定的T-SQL命令来实现您的需求。具体来说,您希望拒绝用户查看所有数据库的权限,同时他们可以访问特定数据库但不成为该数据库的所有者。以下是操作步骤和相关命令:

  1. 拒绝查看所有数据库权限: 使用DENY VIEW ANY DATABASE语句拒绝指定用户查看所有数据库的权限。

    DENY VIEW ANY DATABASE TO userName;
    

    这将阻止用户通过SSMS等工具浏览服务器上的所有数据库列表。

  2. 授予访问特定数据库的权限: 首先确保用户已创建并添加到目标数据库中,然后根据需要分配具体的数据库权限(如读、写等),而不是直接赋予所有者权限。例如,如果要给用户分配对数据库DbName的数据读取权限:

    USE [DbName];
    GRANT SELECT ON SCHEMA::dbo TO userName;
    

    根据实际需求,您可以替换SELECT为其他权限类型,如INSERT, UPDATE, DELETE等。

  3. 避免设置用户为数据库所有者: 您提到不想让用户成为数据库所有者,上述操作已经避免了这一点。使用ALTER AUTHORIZATION命令通常用于转移数据库所有权,但根据您的需求,我们不需要也不应该执行此操作来改变用户权限为所有者。确保在管理用户时,不要执行类似以下的命令:

    -- 此命令不应在此场景下使用,以免用户成为数据库所有者
    -- ALTER AUTHORIZATION ON DATABASE::[DbName] TO userName;
    

注意事项: - 确保在执行这些命令前,您已登录具有足够权限的SQL Server账户,以能执行权限更改操作。 - 谨慎处理权限调整,以免意外锁定重要资源或用户。 - 用户仍然需要被显式地添加到他们有权限访问的每个数据库中,并且为其分配具体的对象或架构级别权限。

以上操作基于标准的SQL Server管理实践,适用于SQL Server 2014/2016版本。请根据实际情况调整权限分配细节。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答