【问题标题】:The EXECUTE permission was denied on the object 'aspnet_CheckSchemaVersion', database 'XXX'对象“aspnet_CheckSchemaVersion”、数据库“XXX”的 EXECUTE 权限被拒绝
【发布时间】:2011-10-10 09:33:16
【问题描述】:

我将 asp.net 4 C# 和实体框架 4 与 MS SQL 2008 一起使用。我正在尝试使用 IIS 7 在本地设置我的 Web 应用程序。

对于我的网站,我使用了在我的数据库 (aspnet_) 中安装了不同表和存储过程的 Asp 会员提供程序。

运行脚本我们收到此错误:

对象“aspnet_CheckSchemaVersion”、数据库“XXX”、架构“dbo”的执行权限被拒绝。在 System.Data.SqlClient.SqlConnection.OnError

我该如何解决这个问题?

【问题讨论】:

标签: asp.net sql-server-2008 asp.net-membership


【解决方案1】:

应该有一些与成员表相关的数据库角色,例如aspnet_profile_fullaccess。确保您使用的帐户是相应角色的成员。

您不应将您连接到数据库的用户分配为 dbowner 权限。该帐户应该只有它需要的权利,仅此而已。如果您授予 dbo 并且有人要利用您网站中的缺陷,他们将可以完全不受控制地访问您的整个数据库以获取他们想要的内容 - 删除表,随意更改数据。

【讨论】:

  • 谢谢 Simone 我仔细阅读了你的回答,我同意你的看法。
  • 我正在连接的用户具有分配给他们的所有 aspnet_* 角色,但我仍然收到此错误消息。它似乎工作的唯一方法是如果我添加 dbowner 角色。你知道什么会导致这种情况吗?
  • 您可能需要运行 ASP.NET SQL Server 注册工具:msdn.microsoft.com/en-us/library/ms229862(v=vs.100).aspx
【解决方案2】:

我认为您不应该让用户成为 db_owner。我遇到了同样的问题,将 BasicAccess 的 4 个角色授予我的用户 + 以授予他对所有存储过程的 EXECUTE 权限就足够了:

授予 [theUserName] 执行权限;

我知道这并不理想。应该只对所需的存储过程授予 EXECUTE 权限,但是如果您需要一个快速的解决方案,直到您找到您的用户需要能够执行的 SP,这应该可以工作。

【讨论】:

    【解决方案3】:

    问题是应用程序登录的用户 ID 在数据库中没有足够的权限。它要么需要是数据库所有者,要么被授予对所有 aspnet_ 存储过程的权限。

    因此,请检查此特定用户在 SQL Server 2008 中的权限。如果可能,请将此用户设为 dbowner。

    希望这会有所帮助...

    编辑:我希望您将其设为 dbowner 只是为了验证是否存在一些权限问题,一旦您确定问题所在,您就可以为该用户分配权限。因此知道确切的原因和确切的解决方案。

    【讨论】:

    • 否决了让用户成为 dbowner 的建议。我知道您在编辑中对此进行了限定,但我知道这足以知道这种说法可能很危险。
    【解决方案4】:

    我同意可以通过添加 db_owner 角色来验证权限错误。但应紧急提醒仅测试并确保删除该角色。

    右击登录用户>>选择属性>>然后用户映射。

    查看提供的 SQL 错误,您可以推测这是基于“执行权限被拒绝”的问题。在使用 db_owner 角色作为测试和确认之后,可以查看各种 SQL 语句以了解调用了哪些存储过程。例如考虑以下

    SQL As String = "EXEC [EAC].[myStoredProcedure]" 等。 . . "

    找出应用程序使用的各种存储过程后,您可以授予对这些特定执行的执行权限。例如,考虑以下 SQL。

    USE DATABASE
    GRANT EXECUTE ON OBJECT::EAC.myStoredProcedure
    TO myRoleorUser; 
    

    注意代码中提到的EAC.myStoredProcedure是在展开数据库然后Programmability再展开Stored Procedures的时候找到的。

    这里是 Microsoft KB,可获取有关针对 SQL Server 上的特定存储过程的进一步帮助。 https://docs.microsoft.com/en-us/sql/relational-databases/stored-procedures/grant-permissions-on-a-stored-procedure?view=sql-server-2017

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-15
      • 2010-09-25
      • 1970-01-01
      • 2021-10-09
      • 2020-10-08
      • 2015-07-10
      • 2011-03-27
      • 2010-12-01
      相关资源
      最近更新 更多