Ошибка входа для пользователя 'DOMAIN \ MACHINENAME $' - PullRequest
107 голосов
/ 11 мая 2010

Я знаю, что это почти дубликат: Ошибка "Ошибка входа для пользователя '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? Но это то, что одна ссылка говорит мне сделать, чтобы решить эту проблему.

Ответы [ 19 ]

1 голос
/ 12 апреля 2015

Проверьте, есть ли у вас

User Instance=true

в строке подключения. Попробуйте удалить его, чтобы решить вашу проблему.

1 голос
/ 20 марта 2017

Единственное, что, похоже, все упустили из виду, это то, что вам может потребоваться интегрированная защита = true. У вас может быть сайт, работающий под учетной записью пула. Все в порядке, и все же можно поразить SQL-сервер исходными учетными данными пользователя, а не учетными данными пула. Это называется ограниченным делегированием. Если вы включите его и настроите SPN, окна будут преобразовывать учетные данные пула пользователю при запросах, поступающих в конечную службу (SQL - только одна такая служба). Вы должны зарегистрировать ОДИН И ТОЛЬКО сервер SQL, который обслуживает запросы SQL на веб-сервере. Настроить все это слишком много для меня, чтобы попытаться точно описать здесь. Мне потребовалось много времени, чтобы проработать это сам.

1 голос
/ 06 марта 2017

У меня также была эта ошибка с аутентифицированным пользователем SQL Server

Я попробовал некоторые исправления, но они не работали.

В моем случае решение состояло в том, чтобы настроить «Режим аутентификации сервера», чтобы разрешить аутентификацию SQL Server в Management Studio: Свойства / Безопасность.

0 голосов
/ 20 мая 2019

Примите во внимание, что здесь есть несколько хороших ответов, но так как я только что потерял время на разработку этого, надеюсь, это может кому-то помочь.

В моем случае все работало нормально, затем прекратилось без видимой причины с ошибкой, указанной в вопросе.

IIS работал как Сетевая служба, а Сетевая служба была настроена на SQL Server ранее (см. Другие ответы на этот пост). Роли сервера и сопоставления пользователей выглядели правильно.

Проблема была; абсолютно без видимой причины; Сетевой сервис переключился на «Запретить» права на вход в базу данных.

Исправить:

  1. Откройте SSMS> Security> Logins.
  2. Щелкните правой кнопкой мыши «NT AUTHORITY \ NETWORK SERVICE» и выберите «Свойства».
  3. Перейдите на вкладку «Статус» и установите Permission to Connect To Database Engine «Предоставить».

Network Service Allowed

0 голосов
/ 11 мая 2019

Я получил эту ошибку, пытаясь проверить решение, используя следующее

string cn = "Data Source=[servername];Integrated Security=true;Initial Catalog=[dbname];";

Я решил так: мне пришлось открыть Visual Studio и запустить его под другой учетной записью, потому что учетная запись, которую я использовал для открытия, не была моей учетной записью администратора.

Так что, если ваша проблема похожа на мою: прикрепите VS к панели задач, затем используйте Shift и правый клик, чтобы открыть меню, чтобы вы могли открыть VS как другого пользователя. enter image description here

0 голосов
/ 23 февраля 2019
  1. Изменить идентификатор пула приложений на локальную систему
  2. В SQL Mgmt> Безопасность> Логины
    1. Найти NT AUTHORITY \ SYSTEM двойной щелчок
    2. Отображения пользователей> Проверьте свою базу данных и назначьте ей роль ниже.
    3. Не забудьте также создать базу данных пользователей o логины безопасности с правильным паролем.
0 голосов
/ 31 августа 2018

Я столкнулся с этой проблемой, когда клиент переименовал SQL Server. Служба отчетов SQL была настроена для подключения к старому имени сервера, для которого также был создан псевдоним, перенаправленный на IP-адрес нового имени сервера.

Все их старые приложения IIS работали, перенаправляя на новое имя сервера через псевдоним. Я догадался, работают ли они SSRS. Попытка подключиться к сайту SSRS Вышла ошибка:

"Служба недоступна. Обратитесь к системному администратору для решения проблемы. Системные администраторы. Сервер отчетов не может подключиться к своей базе данных. Убедитесь, что база данных работает и доступна. Вы также можете проверить Журнал трассировки сервера отчетов для подробностей. "

Он работал на сервере, но не смог подключиться, поскольку использовал псевдоним для старого имени сервера. Переконфигурирование SSRS для использования нового имени сервера вместо старого / псевдонима исправило его.

0 голосов
/ 25 сентября 2014

У меня раньше была такая же проблема, удаление Persist Security Info=True из строки подключения работало для меня.

0 голосов
/ 02 марта 2015

Я потратил несколько часов, пытаясь решить проблему, и, наконец, получил ее - Браузер SQL Server был «остановлен». Исправление заключается в том, чтобы изменить его на «Автоматический» режим:

Если он отключен, перейдите в Панель управления-> Административный Сервис-> Сервисы и найдите агента SQL Server. Щелкните правой кнопкой мыши и выберите «Свойства». Из раскрывающегося списка «Тип запуска» измените «Отключено» на «Автоматически».

цитата отсюда

...