SQL Server新用户无法查看文件夹树,仅获db_reader/db_writer权限
解决方案:SQL Server用户查看表树时ERROR 229的处理
ERROR 229本质是用户缺少读取数据库系统元数据的权限——db_datareader和db_datawriter角色仅授予用户对业务表的读写权限,但SSMS对象资源管理器加载表列表时,需要查询sys.tables、sys.objects等系统目录视图,这些操作需要额外权限。
以下是无需授予db_owner的解决步骤:
方法1:直接授予元数据权限
在目标数据库中执行以下SQL命令(替换占位符为你的数据库名和用户名):
USE [你的目标数据库名]; GO -- 允许用户查看数据库对象的定义 GRANT VIEW DEFINITION TO [你的用户名]; GO -- 允许用户读取系统目录视图(获取表列表需要) GRANT SELECT ON SCHEMA::sys TO [你的用户名]; GO
方法2:创建带元数据权限的自定义角色(推荐)
如果需要为多个用户配置相同权限,可创建自定义角色统一管理:
USE [你的目标数据库名]; GO -- 创建自定义角色 CREATE ROLE [DB_ReadWrite_WithMetadata] AUTHORIZATION [dbo]; GO -- 继承内置读写角色权限 EXEC sp_addrolemember 'db_datareader', 'DB_ReadWrite_WithMetadata'; EXEC sp_addrolemember 'db_datawriter', 'DB_ReadWrite_WithMetadata'; GO -- 添加元数据访问权限 GRANT VIEW DEFINITION TO [DB_ReadWrite_WithMetadata]; GRANT SELECT ON SCHEMA::sys TO [DB_ReadWrite_WithMetadata]; GO -- 将目标用户加入自定义角色 EXEC sp_addrolemember 'DB_ReadWrite_WithMetadata', [你的用户名]; GO
操作完成后,断开SSMS连接并重新登录,即可正常查看表列表。
内容的提问来源于stack exchange,提问作者BrandonM121
相关产品推荐
相关产品推荐

