Как мне взять Elmah работать с SQL Server (проблемы с разрешениями)

StackOverflow https://stackoverflow.com/questions/2630071

Вопрос

У меня есть Elmah работает на моем (CASSINI) сервере разработки и был вполне доволен этим, но теперь, когда я пытаюсь переместить все на мой производственный сервер (IIS7), медовый месяц выглядит как превышение.

Я прошел мимо "gotcha" с IIS7, что, честно говоря, было лучше подчеркнуто в документации, и если я просто использую журнал в памяти, то он работает.

Тем не менее, я пытаюсь получить его для использования журнала SQL Server (как я делаю в моей системе развития), и я получаю ошибку вдоль линий:

Разрешение Execute было отклонено на объекте Elmah_geterrorSXML

Вот и славно. Я знаю, как предоставить разрешения базы данных, но я действительно изо всех сил пытаюсь понять, какой пользователь и какие хранимые процессы / таблицы мне нужно предоставить доступ.

То, что я действительно запутает меня, это то, что мне не пришлось делать ничего подобного, чтобы заставить его работать на моем сервере разработки. Единственное отличие, которое я вижу, так это то, что на моем сервере разработки, кажется, подключается как NT Vaily IUSR, тогда как на моем производственном сервере, кажется, подключается как NT Authority Network Service. (Это просто использует доверенное соединение, поэтому я не явно настроил его, чтобы сделать это - я предполагаю, что это связано с веб-сервером). ОБНОВИТЬ: Я с тех пор установил, что, потому что я использую Кассини, он фактически входил в систему как я (админ), а не IUSR, который объясняет, почему я не получил никаких проблем с разрешениями.

На моем сервере разработки учетная запись IUSR является членом роли общественной базы данных и имеет доступ к требуемой базе данных (снова как «публично»). Там нет явного предоставления разрешений на уровне объекта. [См. Обновление выше - это не имеет значения].

На моем производственном сервере я добавил сетевую службу точно так же, как роль общественной базы данных, явном доступе к базе данных как «публично»). Тем не менее, я получаю эту ошибку разрешения. Почему?!! [См. Обновление выше - единственная причина, по которой я не Получите ошибку разрешения, потому что я работаю как администратор].

И, конечно же, если тот факт, что он работает на местном уровне, это просто «удача», мне нужно будет знать, к какому SPS / таблицам предоставлять доступ. Мое предположение было бы всеми 3 SPS и нет Таблица, но было бы хорошо (опять же), чтобы увидеть некоторую документацию, которая делает эту явную.

Это было полезно?

Решение

Вы предоставляете Elmah с полным подключением в Web.config? Если это так, вы должны точно знать, что пользователь БД, чтобы предоставить разрешения, верно? И да, разрешение было бы выполнить три хранимых процедурах 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