对象'aspnet_CheckSchemaVersion',数据库'XXX'上的EXECUTE权限被拒绝

Gib*_*boK 14 asp.net asp.net-membership sql-server-2008

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

对于我的网站,我的用户Asp会员提供商已经在我的db(aspnet_)中安装了不同的表和sprocs.

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

The EXECUTE permission was denied on the object 'aspnet_CheckSchemaVersion', database 'XXX', schema 'dbo'.     at System.Data.SqlClient.SqlConnection.OnError
Run Code Online (Sandbox Code Playgroud)
  • 我该如何解决这个问题?请给我明确的指示.谢谢你的支持.

Sim*_*sey 24

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

您不应将连接到数据库的用户指定为dbowner权限.该帐户应该只拥有它所需的权利,仅此而已.如果您授予dbo并且有人利用您网站中的漏洞,那么他们将完全不受控制地访问您的整个数据库以获得他们想要的内容 - 删除表格,随意更改数据.

  • 我正在连接的用户已经分配了所有aspnet_*角色,我仍然收到此错误消息.它似乎唯一可行的方法是添加dbowner角色.你知道的任何事情会导致这种情况吗? (2认同)

Jea*_*amp 6

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

授予执行权限 [theUserName];

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