我正在使用SQL Server 2014/2016。是否可以拒绝用户查看对所有数据库的访问权限,但拒绝他们有权访问的数据库却没有成为用户所有者?
我不希望用户具有所有者权限,而是要向数据库中添加多个用户。
DENY VIEW ANY DATABASE TO userName
ALTER AUTHORIZATION ON DATABASE:: [DbName] TO userName
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在SQL Server 2014/2016中,您可以通过执行特定的T-SQL命令来实现您的需求。具体来说,您希望拒绝用户查看所有数据库的权限,同时他们可以访问特定数据库但不成为该数据库的所有者。以下是操作步骤和相关命令:
拒绝查看所有数据库权限: 使用DENY VIEW ANY DATABASE
语句拒绝指定用户查看所有数据库的权限。
DENY VIEW ANY DATABASE TO userName;
这将阻止用户通过SSMS等工具浏览服务器上的所有数据库列表。
授予访问特定数据库的权限: 首先确保用户已创建并添加到目标数据库中,然后根据需要分配具体的数据库权限(如读、写等),而不是直接赋予所有者权限。例如,如果要给用户分配对数据库DbName
的数据读取权限:
USE [DbName];
GRANT SELECT ON SCHEMA::dbo TO userName;
根据实际需求,您可以替换SELECT
为其他权限类型,如INSERT
, UPDATE
, DELETE
等。
避免设置用户为数据库所有者: 您提到不想让用户成为数据库所有者,上述操作已经避免了这一点。使用ALTER AUTHORIZATION
命令通常用于转移数据库所有权,但根据您的需求,我们不需要也不应该执行此操作来改变用户权限为所有者。确保在管理用户时,不要执行类似以下的命令:
-- 此命令不应在此场景下使用,以免用户成为数据库所有者
-- ALTER AUTHORIZATION ON DATABASE::[DbName] TO userName;
注意事项: - 确保在执行这些命令前,您已登录具有足够权限的SQL Server账户,以能执行权限更改操作。 - 谨慎处理权限调整,以免意外锁定重要资源或用户。 - 用户仍然需要被显式地添加到他们有权限访问的每个数据库中,并且为其分配具体的对象或架构级别权限。
以上操作基于标准的SQL Server管理实践,适用于SQL Server 2014/2016版本。请根据实际情况调整权限分配细节。