Я знаю, что это почти дубликат: Ошибка "Ошибка входа для пользователя 'NT AUTHORITY \ IUSR'" в ASP.NET и SQL Server 2008 и Ошибка входа для имени пользователя пользователя '- System.Data.SqlClient.SqlException с LINQ во внешнем проекте / библиотеке классов , но некоторые вещи не складываются по сравнению с другими приложениями на моем сервере, и я не уверен, почему.
Используемые коробки:
Веб-бокс
SQL Box
SQL Test Box
Мое приложение:
У меня есть веб-приложение ASP.NET, которое ссылается на библиотеку классов, использующую LINQ-to-SQL. Строка подключения настроена правильно в библиотеке классов. Согласно Ошибка входа в систему для пользователя 'username' - System.Data.SqlClient.SqlException с LINQ во внешней библиотеке проектов / классов Я также добавил эту строку подключения в веб-приложение.
Строка подключения использует учетные данные 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$'.
Теперь ссылка на это Ошибка «Не удалось войти в систему для пользователя NT AUTHORITY \ IUSR» в ASP.NET и SQL Server 2008 говорит, что это действительно локальная сетевая служба и используется любое другое не доменное имя не будет работать.
Но я запутался, потому что я проверил и SQL Box, и SQL Test Box SQL Management Studio, и оба имеют NT AUTHORITY/NETWORK SERVICE
в разделе Безопасность -> Вход в систему, на уровне базы данных, которого нет в списке Безопасность -> Пользователи, но на уровне базы данных Безопасность -> Пользователи У меня есть пользователь, отображаемый в строке подключения.
На уровне NTFS на веб-сервере разрешения имеют полный контроль над NETWORK SERVICE.
Причина, по которой я в замешательстве, заключается в том, что на моем веб-сервере есть много других веб-приложений, которые ссылаются на базы данных SQL Box и SQL Test Box, и все они работают. Но я не могу найти разницу между ними и моим текущим приложением, кроме того, что я использую библиотеку классов. Будет ли это иметь значение? Проверка разрешений NTFS, настройка входов в систему безопасности на уровне сервера и базы данных, строка подключения и метод подключения (учетные данные SQL Server), а также пул приложений IIS и другие параметры папок - все одинаковые.
Почему эти приложения работают без добавления имени машины $ к разрешениям любого из моих блоков SQL? Но это то, что одна ссылка говорит мне сделать, чтобы решить эту проблему.