0

我有一个 MSSQL 数据库和一个“普通”用户访问它。当我尝试使用 sys.objects 之类的表时,出现权限错误:

select name from sys.objects
Msg 229, Level 14, State 5, Line 1
The SELECT permission was denied on the object 'objects', database 'mssqlsystemresource', schema 'sys'.

为什么?文件说

在 SQL Server 2005 和更高版本中,目录视图中元数据的可见性仅限于用户拥有或已被授予某些权限的安全对象。

所以我认为我应该被允许使用 sys.objects,即使它只会列出对我来说可见的对象......

我的用户是用

CREATE LOGIN [factoryFX20_K_user] WITH PASSWORD=N'...', DEFAULT_DATABASE=[ff20121025], DEFAULT_LANGUAGE=[English], CHECK_EXPIRATION=OFF, CHECK_POLICY=ON
EXEC sys.sp_addsrvrolemember @loginame = N'factoryFX20_K_user', @rolename = N'serveradmin'

USE [ff20121025]
CREATE USER [factoryFX20_K_user] FOR LOGIN [factoryFX20_K_user] WITH DEFAULT_SCHEMA=[factoryFX20_K_user]
4

1 回答 1

1

问题与对象'sysobjects',数据库'mssqlsystemresource',模式'sys'的SELECT权限被拒绝中相同:我的用户有一些“拒绝”角色。

解决方案是删除用户的这个角色:

USE [ff20121025]
EXEC sp_droprolemember N'db_denydatawriter', N'factoryFX20_K_user'
EXEC sp_droprolemember N'db_denydatareader', N'factoryFX20_K_user'

谢谢乔恩!

于 2012-10-26T09:36:59.077 回答