Ошибка подключения к SQL Server на Windows 7 / Windows 2008 R2 через ASP.NET
Не знаю сталкивались ли Вы с подобной траблой. Но я на протяжении нескольки дней не мог понять причину почему я не могу подсоеденится с SQL Server на своем Windows 7 из ASP.NET приложений.
Так вот решение проблемы оказалось достаточно простым. Так как я промучился с этим несколько дней я решил поделится этой информацией с Вами и возможно она станет кому-то полезной.
При подключении из асп.нет приложения я постоянно получал ошибку следующего содержания:
Failed to generate a user instance of SQL Server due to failure in retrieving the user's local application data path. Please make sure the user has a local user profile on the computer. The connection will be closed.
Проблема оказалась в том что начиная с IIS 7.5, Application Pool работает с уникальным identity на основе имени пула, в отличие от ранее используемого NetworkService – умолчательного identity для IIS6 и IIS7. Основной причиной такого изменения является улучшение безопасности IIS и пулов приложений. Но у нового identity нет юзер профайла что приводит к ошибке указанной выше.
Чтобы "пофиксить" такое поведение можно:
1. Вернутся обратно к NetworkService
2. Переключить identity на аккаунт пользователя с локальным профилем (локальный или доменный пользователь).
Чтобы сделать это нужно перейти в IIS Manager (inetmgr), в нем перейти к узлу Application Pools, выбрать пул вашего приложения и нажать на Advanced Settings на правой панели. Перейдите Identity и выберете NetworkService в качестве "built-in account" или "Custom account" и введите пользователя/пароль.
Также вот ссылка на статью где майкрософт рассказывает о введение изменений связанных с пулами и identities