我有ELMAH工作我(卡西尼)开发服务器上,并且是与它很高兴,但现在,我想一切都移动到我的生产服务器(IIS7),蜜月看起来像被过度。

我有过去的”疑难杂症”与IIS7 ,坦率地说本来可以更好的文档中突出显示,如果我只是使用的存储器内日志,然后它工作。

不过,我试图得到它使用SQL Server日志(我在我的开发系统做的),和我一起的线得到一个错误:

  

执行权限被拒绝在物体上ELMAH_GetErrorsXml

好了,细。我知道如何授予数据库权限,但我真的努力理解哪些用户和存储的特效/表我需要授予访问权限。

这是真的困惑我的事情是,我没有做这样的事来得到它的工作,我的开发服务器上。我能看到的唯一区别是,我的开发服务器上,似乎连为NT AUTHORITY \ IUSR,而我的生产服务器上它似乎连接为NT AUTHORITY \ NETWORK SERVICE。 (这只是使用受信任的连接,所以我还没有明确的配置它这样做 - 我相信这是与Web服务器做)。 更新:我自成立以来,由于我使用的卡西尼号,它实际上是在登录为我(管理员),而不是IUSR,这解释了为什么我没有得到任何许可权问题。

在我的开发服务器,IUSR帐户是公共数据库角色的成员,并已获得所需的数据库(如再次“公共”)。有没有对象级权限授予明确。 [见上面更新 - 这是无关紧要]

在我的生产服务器,我已经添加NETWORK SERVICE以完全相同的方式(公共数据库的作用,为“公共”到数据库中明确的访问)。然而,我得到这个权限错误。为什么?!! [查看更新以上 - 这是唯一的原因,我的的获得许可的错误是因为我正在为一个管理员。

和,当然,如果它工作在本地的事实仅仅是“运气”,我需要知道哪些SP /表授予访问权限。我的猜测是所有3个SP和的的表,但它是很好的(再次)看到一些文件,使这个明确的。

有帮助吗?

解决方案

您提供ELMAH在web.config中一个完整的ConnectionString?如果是这样,你应该确切地知道什么样的数据库用户授予权限,对不对?是的,允许将执行三个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>

其他提示

需要例如SQL的给执行权限给用户USER_NAME:

GRANT EXECUTE ON ELMAH_GetErrorsXml TO USER_NAME
GRANT EXECUTE ON ELMAH_GetErrorXml TO USER_NAME
GRANT EXECUTE ON ELMAH_LogError TO USER_NAME
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top