Я знаю, що це майже дублікат: Помилка "Не вдалося ввійти для користувача" NT AUTHORITY \ IUSR "" в ASP.NET і SQL Server 2008 і не вдалося ввести ім'я користувача "- System.Data.SqlClient.SqlException з LINQ в зовнішня бібліотека проектів / класів, але деякі речі не складаються порівняно з іншими програмами на моєму сервері, і я не знаю, чому.
Використовувані коробки:
Web Box
SQL Box
SQL Test Box
Моя заявка:
У мене є веб-додаток ASP.NET, в якому посилається на бібліотеку класів, яка використовує LINQ до SQL. Рядок з'єднання налаштовано належним чином у бібліотеці класів. Оскільки за входом не вдалося користувачеві ім'я користувача - 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" />
Це з’єднання підтвердилось, що він працює, додавши його до Server Explorer. Це рядок підключення, який використовує мій .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-ящиків? Але саме це одне посилання підказує мені зробити, щоб вирішити цю проблему.