System.Data.SqlClient.SqlException:对象'tableName',数据库'dbName',架构'dbo'上的SELECT权限被拒绝

时间:2014-03-11 10:38:00

标签: asp.net sql-server asp.net-mvc sql-server-2008 iis

我尝试通过我在本地IIS 7中托管的ASP.NET MVC Web应用程序从SQL Server中选择一些数据,我收到此错误:

  

System.Data.SqlClient.SqlException:拒绝了SELECT权限   对象'tableName',数据库'dbName',架构'dbo'。

知道检查了所有IIS APPPOOL\ASP.NET V4.0 Integrated的权限,我该如何解决?

堆栈追踪:

  

[RuntimeBinderException:无法对null执行运行时绑定   参考] CallSite.Target(Closure,CallSite,Object)+200
  System.Dynamic.UpdateDelegates.UpdateAndExecute1(CallSite site,T0   arg0)+924 ASP._Page_Views_Shared__Header_cshtml.Execute()in   c:\ Users \ Nectarys \ desktop \ monitoringn_web \ monitoring2 -   副本\ monitoringn \查看\ Shared_Header.cshtml:11
  System.Web.WebPages.WebPageBase.ExecutePageHierarchy()+280
  System.Web.Mvc.WebViewPage.ExecutePageHierarchy()+ 1266   System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext   pageContext,TextWriter writer,WebPageRenderingBase startPage)+196
  System.Web.Mvc.Html.PartialExtensions.Partial(HtmlHelper htmlHelper,   String partialViewName,Object model,ViewDataDictionary viewData)   +158 ASP._Page_Views_Shared__Layout_cshtml.Execute()在c:\ Users \ Nectarys \ desktop \ monitoringn_web \ monitoring2中 -   副本\ monitoringn \查看\ Shared_Layout.cshtml:13
  System.Web.WebPages.WebPageBase.ExecutePageHierarchy()+280
  System.Web.Mvc.WebViewPage.ExecutePageHierarchy()+ 1266   System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext   pageContext,TextWriter writer,WebPageRenderingBase startPage)+196
  System.Web.WebPages.WebPageBase.Write(HelperResult result)+89
  System.Web.WebPages.WebPageBase.RenderSurrounding(字符串   partialViewName,Action 1 body) +233
System.Web.WebPages.WebPageBase.PopContext() +291
System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +378 System.Web.Mvc.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17() +33 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func
1 continuation)   +855148 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext   controllerContext,IList`1过滤器,ActionResult actionResult)+265
  System.Web.Mvc.Async&LT;&GT; C_ DisplayClass25.b _22(IAsyncResult的   asyncResult)+839620
  System.Web.Mvc&LT;&GT; C_ DisplayClass1d.b _18(IAsyncResult的   asyncResult)+28
  System.Web.Mvc.Async&LT;&GT; C_ DisplayClass4.b _3(IAsyncResult的   ar)+15 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult   asyncResult)+65
  System.Web.Mvc.Async&LT;&GT; C_ DisplayClass4.b _3(IAsyncResult的   ar)+15 System.Web.Mvc.Controller.EndExecute(IAsyncResult   asyncResult)+51
  System.Web.Mvc&LT;&GT; C_ DisplayClass8.b _3(IAsyncResult的   asyncResult)+42
  System.Web.Mvc.Async&LT;&GT; C_ DisplayClass4.b _3(IAsyncResult的   ar)+15 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult)   asyncResult)+51
  System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()   +606 System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&amp; completedSynchronously)+288

另外,我grant SELECT,INSERT,UPDATE,DELETE on dbo.tableName to "IIS APPPOOL\ASP.NET V4.0 Integrated";。我这样做是通过选择dbName并在新脚本中创建的,我写了那行。

3 个答案:

答案 0 :(得分:6)

嗯......这不是因为IIS APPPOOL \ ASP.NET V4.0集成,而是来自你的数据库。

  1. 请登录SQL服务器
  2. 转到您的数据库 - &gt;扩展它
  3. 安全 - &GT;您的数据库用户
  4. 右键单击 - &gt;特性
  5. 请确认db_denydatareader和db_denydatawriter是否取消
  6. 希望这个帮助

答案 1 :(得分:0)

您的db用户无权读取db中的表。您可以赋予它db_owner权限,它应该可以工作。

  1. 登录SQL服务器
  2. 转到您的数据库 - &gt;扩展它
  3. 安全 - &GT;您的数据库用户
  4. 右键单击 - &gt;特性
  5. 确保选择了db_owner

答案 2 :(得分:0)

我有一个不同的问题。 我已经完成了将权限更改为“ db_owner”的操作,但仍然无法解决我的问题。 然后,我在IIS管理器中将DefaultAppPool更改为“ NetworkService”。它解决了我的问题。