УВЕДОМЛЕНИЕ ПО ЗАПРОСУ

В настоящее время я использую механизм cache для нашего сайта. Я хочу использовать функцию зависимостей SQL Cache. Я запускаю следующую команду в студии управления, и она не работает.

GRANT SUBSCRIBE QUERY NOTIFICATIONS TO "my_server_name\ASPNET"

Ошибка, которую я получаю:

Cannot find the user 'my_server_name\ASPNET', because it does not exist or you do not have permission.

Я попытался войти в систему с администратором конкретной базы данных. Я устанавливаю уведомление для аутентификации sa, и windows с администратором машины. Также попробовал запустить студию управления как администратор и все равно не радость. Может кто-то, пожалуйста, назовите меня в правильном направлении. Спасибо!

Ответ 1

Во-первых, похоже, вы пытаетесь предоставить разрешения для учетной записи, под которой работает сайт. В IIS 6 и IIS7 это управление учетной записью, установленной в пуле приложений. Эта учетная запись была ASPNET, но больше не по умолчанию. Вместо этого по умолчанию (начиная с .NET 2.0, я считаю) NETWORK SERVICE. Однако, если вы используете IIS 7, это снова изменилось. По умолчанию в IIS7 он использует что-то, называемое "ApplicationPoolIdentity", которое является его собственным специальным удостоверением, созданным для каждого сайта. Если SQL Server находится на другой машине, чем веб-сервер, вы столкнетесь с другой проблемой, которая является учетными данными, которые являются локальными для машины.

Моя рекомендация заключалась бы в следующем: в зависимости от вашей установки:

Оба сервера находятся в домене и вы хотите использовать надежные соединения:

  • Создайте учетную запись домена и опустите ее в Domain Users.
  • На веб-сервере отпустите эту учетную запись в группу IIS_IUSRS.
  • Войдите в пул приложений для сайта и измените учетную запись, под которой сайт работает в этой учетной записи домена. Вы также захотите убедиться, что эта учетная запись имеет соответствующие разрешения NTFS для файлов сайта. Если этот сайт записывает только в базу данных, вы можете дать учетной записи доступ только для чтения к папкам (-ам) с файлами сайта.
  • Убедитесь, что строка соединения, используемая сайтом, сформирована для запроса надежного соединения. (См. Www.connectionstrings.com для синтаксиса).
  • На сервере базы данных выполните свой грант для этой учетной записи:

GRANT SUBSCRIBE QUERY NOTIFICATIONS TO "domain name\MyIISAccount"

Также могут возникнуть другие проблемы Kerberos, связанные с тем, что оба сервера в домене могут потребовать создания SPN (имя участника службы).

Ни один сервер не входит в домен (т.е. оба являются серверами-членами), и вы хотите использовать доверенные соединения:

  • Создайте локальную учетную запись как на веб-сервере, так и на сервере базы данных с тем же именем пользователя и паролем. Очень важно, чтобы оба они имели одинаковое имя пользователя и пароль. Этот метод включает в себя использование сквозной аутентификации NTLM, которая соответствует хешу, созданному по имени пользователя и паролю, чтобы определить, проходит ли аутентификация пользователя между двумя отдельными серверами. В Windows 2008 R2 вам может потребоваться выполнить несколько локальных политик, чтобы гарантировать, что NTLM включен между двумя серверами.
  • С этой учетной записью выполните действия с №2 до №4.
  • На SQL Server убедитесь, что у этой локальной учетной записи есть логин и что этот логин подключается к пользователю в базе данных. Затем вы выполните что-то вроде:

GRANT SUBSCRIBE QUERY NOTIFICATIONS TO 'SQLServerMachineName\AccountUsedBySite'

Вы хотите использовать учетные записи SQL вместо надежного соединения:

  • В этом случае строка соединения, используемая сайтом для подключения к базе данных, будет содержать имя пользователя и пароль, которые сопоставляются с именем входа в базе данных SQL Server, который сопоставляется с пользователем в базе данных (обычно он помещается в роль db_owner сделать это dbo). Это
  • Предполагая, что учетные данные верны, вам нужно только выполнить грант против этого пользователя:

GRANT SUBSCRIBE QUERY NOTIFICATIONS TO 'SQLUserAccountUsedBySite'

И IIS, и SQL Server находятся на одном компьютере, и вы хотите использовать надежные соединения

  • Создайте локальную учетную запись пользователя и переместите ее в группу "Пользователи".
  • Отбросьте эту учетную запись в локальную группу IIS_IUSRS.
  • Перейдите в пул приложений для сайта и измените учетную запись, под которой сайт работает с этой локальной учетной записью. Вы также захотите убедиться, что эта учетная запись имеет соответствующие разрешения NTFS для файлов сайта. Если этот сайт записывает только в базу данных, вы можете дать учетной записи доступ только для чтения к папкам (-ам) с файлами сайта.
  • Убедитесь, что строка соединения, используемая сайтом, сформирована для запроса надежного соединения. (См. Www.connectionstrings.com для синтаксиса).
  • В SQL Server создайте логин для этой учетной записи, затем создайте пользователя в соответствующей базе данных, чтобы эта учетная запись переместила его в соответствующие роли.
  • Теперь выполните свой грант в этой учетной записи:

GRANT SUBSCRIBE QUERY NOTIFICATIONS TO 'SQLServerMachineName\MyIISAccount'

Ответ 2

Попробуйте следующее:

ГРАНТ ПОДПИСАТЬ ЗАЯВЛЕНИЕ О ЗАЯВЛЕНИИ К QUERY [my_server_name\ASPNET]