что означает «запустить рабочий процесс ASP.NET с привилегиями dbo»? - PullRequest
1 голос
/ 13 января 2010

У меня проблемы с реализацией SqlSiteMapProvider с использованием статьи Wicked Code . Я использую VB.NET и SQL Server 2008 - и событие OnSiteMapChanged не запускается (SqlDepdencyCache, похоже, просто не работает вообще).

В статье говорится: «Вам также необходимо запустить рабочий процесс ASP.NET с привилегиями dbo, чтобы зависимости кэша SQL Server 2005 работали автоматически.)»

Я не понимаю, что это значит. Я знаю, что такое учетная запись пользователя ASPNET и что она запускает aspnet_wp.exe, которая, как я понимаю, в основном является средой выполнения ASP.NET. Я знаю, какие привилегии DBO находятся на SQL. Но мой SQL и веб-серверы находятся на разных машинах, а ASPNET не является учетной записью домена. И кажется безумным пытаться заставить SqlDepdencyCache работать, и мне трудно поверить, что все так делают?

Кто-нибудь знает, что мне здесь не хватает?

Большое спасибо

РЕДАКТИРОВАТЬ: Я НАШЕЛ ВОПРОС !!! УСТАНОВИТЕ NOCOUNT НА ВНУТРИ МОЕГО ХРАНИЛИЩЕ ПРОЦЕССА БЫЛО ЭТО ПРИЧИНА !! ОСТЕРЕГАЙТЕСЬ, ЧТО ЭТО НУЖНО В ДОКУМЕНТАЦИИ MSDN !!!!

Ответы [ 2 ]

2 голосов
/ 13 января 2010

Идентификацию вашего рабочего процесса необходимо изменить либо на пользователя домена, либо на пользователя с совпадающим именем пользователя / паролем как на веб-сервере, так и на сервере баз данных. Для SQL Server также должна быть включена аутентификация Windows (или смешанная аутентификация).

В IIS 5 (Windows XP / 2000) необходимо изменить Идентификатор процесса ASP.NET в файле machine.config.

В IIS 6/7 (Windows Vista / 7/2003/2008 / R2) вы просто сможете изменить удостоверение пула приложений. Если это не работает, включите <identity impersonate="true" /> в вашем файле web.config.

1 голос
/ 13 января 2010

SqlDependencyCache использует SqlDependency, а SqlDependency развертывает во время выполнения набор служб, очередей и хранимых процедур в вашей базе данных как часть своей инфраструктуры. Вы можете прочитать эту статью более подробно, что на самом деле происходит Таинственное Уведомление .

Когда вы создаете поставщика карты сайта, вы указываете строку подключения. Эта строка соединения указывает либо логин и пароль SQL, либо указывает, что должна использоваться аутентификация SSPI (или Trusted, или Integrated). Если указаны имя пользователя и пароль, этот пользователь используется для входа в базу данных вашего приложения (база данных ASP). Когда используется SSPI, соединение устанавливается с использованием идентификатора потока ASP, который является либо идентификатором пула приложений, либо идентификацией олицетворенного пользователя. Какой бы логин ни использовался, он должен иметь привилегии, необходимые для развертывания инфраструктуры SqlDependency (создать очередь, создать службу, создать хранимую процедуру). Самый простой способ - просто сделать этого пользователя входа в базу данных членом роли db_owner (что является правильной формулировкой для того, что в статье называется «привилегии dbo»).

Таким образом, в зависимости от строки соединения yoru, удостоверения вашего пула приложений и ваших настроек олицетворения, пользователь базы данных, который соответствует имени входа, используемому поставщиком карт, должен быть добавлен в роль db_owner. Я не могу сказать , что вам нужно сделать, потому что все зависит от переменных факторов, перечисленных выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...