Я знаю, что это почти дубликат: The error "Login failed for user 'NT AUTHORITY\IUSR'" in ASP.NET and SQL Server 2008 и Login failed for user 'username' - System.Data.SqlClient.SqlException with LINQ in external project/class library, но некоторые вещи не складываются по сравнению с другими приложениями на моем сервере, и я не знаю, почему. используется
Коробки:
Web Box
SQL Box
SQL Test Box
Мой Применение:
Я получил aASP.NET веб-приложения, который ссылается библиотека классов, использующая LINQ-to-SQL. Строка подключения правильно настроена в библиотеке классов. По Login failed for user 'username' - System.Data.SqlClient.SqlException with LINQ in external project/class library Я также добавил эту строку подключения к веб-приложению.
Строка подключения использует учетные данные SQL, как так (как в веб-приложения и библиотеки классов):
<add name="Namespace.My.MySettings.ConnectionStringProduction"
connectionString="Data Source=(SQL Test Box);Initial Catalog=(db name);Persist Security Info=True;User ID=ID;Password=Password"
providerName="System.Data.SqlClient" />
Эта связь подтверждается как работа с помощью добавления его в обозревателе серверов. Это строка подключения, используемая моим файлом .dbml.
Проблема:
Я получаю следующее сообщение об ошибке:
System.Data.SqlClient.SqlException: Login failed for user 'DOMAIN\MACHINENAME$'.
Теперь ссылающийся это The error "Login failed for user 'NT AUTHORITY\IUSR'" in ASP.NET and SQL Server 2008 он говорит, что это действительно служба локальной сети и с использованием любого другого без доменного имени не будет работать.
Но я смущен, потому что я проверил SQL SQL Server и SQL Test Box SQL Management Studio, и оба они имеют NT AUTHORITY/NETWORK SERVICE
в разделе Безопасность -> Логины на уровне базы данных, которые не указаны в разделе Безопасность -> Пользователи, но на уровне базы данных Безопасность -> Пользователи, у которых есть пользователь, отображаемый в строке подключения.
На уровне NTFS на веб-сервере разрешения имеют NETWORK SERVICE, которые имеют полный контроль.
Причина, по которой я запутался, состоит в том, что на моем веб-сервере есть множество других веб-приложений, эта база данных ссылок как на SQL Box, так и на SQL Test Box, и все они работают. Но я не могу найти разницу между ними и моим текущим приложением, кроме того, что я использую библиотеку классов. Будет ли это важно? Проверка разрешений NTFS, настройка логинов безопасности на уровне серверов и баз данных, строка подключения и способ подключения (учетные данные SQL Server), пул приложений IIS и другие параметры папки - все те же.
Почему эти приложения работают без добавления машинного имени $ в разрешения любого из моих SQL-полей? Но это то, что говорит мне одна ссылка, чтобы решить эту проблему.
Итак, чтобы вы не использовали пользователя базы данных? Мы создаем один и можем переключаться между ним и SA в зависимости от того, что нам нужно делать ... – jcolebrand
В строке подключения я использую пользователя базы данных, который я создал в области Security -> Logins, добавил его в Security -> пользователей базы данных и предоставили ей разрешения dbo. Вот как я сделал все свои другие приложения. – SventoryMang