【发布时间】:2012-10-16 12:23:37
【问题描述】:
我有一个 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]
【问题讨论】:
-
是否有人可能在您的盒子上的
sys.objects上添加了额外的安全性。你可以在不同的服务器上测试吗? -
不幸的是,我没有另一个 10.0 服务器。而且我在 sys.objects 的安全性方面找不到任何自定义。
-
您是对的:与您找到的链接相同的问题和解决方案。