如何获得ELMAH与SQL Server的工作(许可问题)
-
26-09-2019 - |
题
我有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