对象'sysobjects',数据库'mssqlsystemresource',架构'sys'上的SELECT权限被拒绝

Chr*_*mes 52 sql sql-server permissions sysobjects dotnetnuke

设置:SQL Server 2005和DotNetNuke 05.01.02.

这开始于我尝试在其SQL脚本中安装具有"select*from dbo.sysobjects"的DNN模块.失败,出现以下错误:

对象'sysobjects',数据库'mssqlsystemresource',架构'sys'上的SELECT权限被拒绝.

我通过SQL Server Management Studio登录数据库作为DNN用户帐户,当我尝试在sysobjects视图上执行SELECT时,我收到相同的错误.

我尝试向该视图授予DNN用户帐户显式SELECT权限.当我通过转到安全性 - >用户 - > DNNUserLogin->右键单击 - >属性 - >安全性并向下滚动以查找sys.sysobjects视图来检查它时,它说该用户帐户具有dbo的显式权限:和SELECT复选框已选中.但我仍然无法在sysobjects视图上执行选择作为该DNN用户帐户.

我究竟做错了什么?我怎样才能做到这一点?

Chr*_*mes 101

这也是用户具有拒绝权限的问题; 在我急于授予权限我基本上给了用户一切.否认是杀了它.因此,只要我删除了这些权限,就可以了.

  • 别担心,这让我们两个人!欢呼发布答案. (13认同)
  • 如何修复它.解释步骤并帮助他人 (4认同)
  • 做六个吧!:D 仅供参考,我使用 Toad for SQL Server。我进入了存在问题的数据库>安全>角色>对于db_denydatareader和db_denydatawriter,我删除了遇到问题的用户帐户。 (2认同)

Rai*_*han 33

通过删除数据库角色db_denydatawriterdb_denydatreader数据库用户,我遇到了同样的错误并解决了问题.为此,在登录时选择适当的数据库用户>>属性>>用户映射>>找出数据库并选择它>>取消选中提到的Db用户角色.而已 !!


小智 5

在良好的服务器上执行此代码,它将为您提供 PUBLIC 角色的完整权限。复制输出并粘贴到有问题的服务器。执行。再次尝试登录。它解决了我们的问题。

SELECT  SDP.state_desc ,
        SDP.permission_name ,
        SSU.[name] AS "Schema" ,
        SSO.[name] ,
        SSO.[type]
FROM    sys.sysobjects SSO
        INNER JOIN sys.database_permissions SDP ON SSO.id = SDP.major_id
        INNER JOIN sys.sysusers SSU ON SSO.uid = SSU.uid
ORDER BY SSU.[name] ,
        SSO.[name]
Run Code Online (Sandbox Code Playgroud)