【问题标题】:How do I get ELMAH to work with SQL Server (permission problems)如何让 ELMAH 与 SQL Server 一起工作(权限问题)
【发布时间】:2010-04-13 13:57:13
【问题描述】:

我已经让 ELMAH 在我的 (Cassini) 开发服务器上工作,并且对它非常满意,但现在我正试图将所有内容移至我的生产服务器 (IIS7),蜜月期似乎结束了。

我已经通过了"gotcha" with IIS7,坦率地说,在文档中可以更好地突出显示,如果我只使用内存日志,那么它就可以工作。

但是,我试图让它使用 SQL Server 日志(就像我在我的开发系统上所做的那样),我收到了如下错误:

对象 ELMAH_GetErrorsXml 的 EXECUTE 权限被拒绝

嗯,很好。我知道如何授予数据库权限,但我真的很难理解需要授予访问权限的用户和存储的过程/表。

真正让我困惑的是,我不需要做任何类似的事情来让它在我的开发服务器上工作。我能看到的唯一区别是,在我的开发服务器上,它似乎连接为 NT AUTHORITY\IUSR,而在我的生产服务器上,它似乎连接为 NT AUTHORITY\NETWORK SERVICE。 (它只是使用受信任的连接,所以我没有明确配置它来做到这一点 - 我认为它与 Web 服务器有关)。 更新:我已经确定,因为我使用的是 Cassini,它实际上是以我(管理员)而不是 IUSR 身份登录的,这解释了为什么我没有遇到任何权限问题。

在我的开发服务器上,IUSR 帐户是公共数据库角色的成员,并且可以访问所需的数据库(同样是“公共”)。没有明确授予对象级权限。 [参见上面的更新 - 这无关紧要]。

在我的生产服务器上,我以完全相同的方式添加了 NETWORK SERVICE(公共数据库角色,以“公共”身份显式访问数据库)。然而,我得到这个权限错误。为什么?!! [请参阅上面的更新 - 我没有收到权限错误的唯一原因是因为我以管理员身份运行]。

当然,如果它在本地工作的事实只是“运气”,我将需要知道要授予访问哪些 SP/表。我的猜测是所有 3 个 SP,而 不是 表,但最好(再次)看到一些明确说明这一点的文档。

【问题讨论】:

    标签: asp.net visual-studio-2008 sql-server-2008 elmah


    【解决方案1】:

    授予用户 USER_NAME 执行权限所需的 sql 示例:

    GRANT EXECUTE ON ELMAH_GetErrorsXml TO USER_NAME
    GRANT EXECUTE ON ELMAH_GetErrorXml TO USER_NAME
    GRANT EXECUTE ON ELMAH_LogError TO USER_NAME
    

    【讨论】:

      【解决方案2】:

      您是否在 web.config 中为 ELMAH 提供了完整的连接字符串?如果是这样,您应该确切地知道向哪个数据库用户授予权限,对吧?是的,权限将是执行三个 ELMAH 存储过程...

      这是我使用过的配置:

      <elmah>
          <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="elmah" />
      </elmah>
      
      <connectionStrings>
          <add name="elmah" connectionString="Data Source=XXX;Initial Catalog=XXX;User Id=XXX;Password=XXX;" providerName="System.Data.SqlClient" />
      </connectionStrings>
      

      【讨论】:

      • @Eric:我使用的是受信任的连接,因此用户实际上会根据运行的机器而有所不同。如果我必须授予明确的权限,那很好,我可以这样做。感谢您确认这只是这 3 个 SP。为了将自己与哪个用户隔离开来,我将创建一个数据库角色,并确保适当的用户(可能是 NETWORK SERVICE)是该角色的成员。遗憾的是,ELMAH 没有将角色创建为设置的一部分(例如,SQL Server 的 ASP.NET Membership 提供程序所做的)。也很遗憾他们没有提到需要这样做!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-30
      • 1970-01-01
      • 2010-11-21
      • 2011-08-13
      • 2012-12-11
      • 1970-01-01
      相关资源
      最近更新 更多