Подтвердить что ты не робот

Ошибка входа для пользователя "NT AUTHORITY\NETWORK SERVICE"

Я боролся с этим уже 2 дня, не прибегая к решению. Я прочитал 20-30 нитей alteast и stil не может решить это.

Пожалуйста, помогите мне.

Я отключил анонимную аутентификацию, включил олицетворение asp.net.

Я добавил <identity impersonate = "true" />

Я добавил пользователя к входам безопасности, которые подключены к базе данных, к которой я пытаюсь подключиться к

Это строка соединения, которую я использую:

Data Source=IPTOSERVER;Initial Catalog=Phaeton;User Id=User;Password=Password;

ErrorMessage:

Невозможно открыть базу данных "Phaeton.mdf", запрошенную при входе в систему. Ошибка входа в систему.

Ошибка входа для пользователя "NT AUTHORITY\NETWORK SERVICE".

4b9b3361

Ответ 1

Сообщение об ошибке, которое вы получаете, сообщает вам, что приложение не удалось подключиться к серверу sqlexpress, а не к серверу sql. Я просто изменю имя db в sql-сервере и затем соответствующим образом обновить строку соединения и повторю попытку.

В сообщении об ошибке указано следующее:

Cannot open database "Phaeton.mdf" requested by the login. The login failed.

Похоже, вы все еще пытаетесь подключиться к базе данных на базе файлов, имя "Phaeton.mdf" не соответствует вашему новому имени базы данных sql "Phaeton".

Надеюсь, что это поможет.

Ответ 2

У меня возникло подобное сообщение об ошибке, которое я заметил в средстве просмотра событий Windows, которое гласило:

Ошибка входа для пользователя "NT AUTHORITY\NETWORK SERVICE". Причина: Не удалось открыть явно указанную базу данных. [КЛИЕНТ: локальная машина]

Решение, разрешившее мою проблему, было:

  • Вход в SqlExpress через студию управления SQL Server
  • Перейдите в каталог "Безопасность" базы данных
  • Щелкните правой кнопкой мыши каталог "Пользователи"
  • Выберите "Новый пользователь..."
  • Добавить 'NT AUTHORITY\NETWORK SERVICE' в качестве нового пользователя
  • В области "Членство в роли данных" выберите db_owner
  • Нажмите "ОК"

Вот скриншот: Screenshot of adding new user Network Service as db_owner to SqlExpress

Ответ 3

Если сообщение об ошибке просто

"Ошибка входа для пользователя 'NT AUTHORITY\NETWORK SERVICE'.", затем предоставить разрешение на вход для "NT AUTHORITY\NETWORK SERVICE"

используя

"sp_grantlogin 'NT AUTHORITY\NETWORK SERVICE'" 

else, если сообщение об ошибке похоже на

"Невозможно открыть базу данных" Phaeton.mdf ", запрошенную логином. не смогли. Ошибка входа в систему для пользователя "NT AUTHORITY\NETWORK SERVICE".

попробуйте использовать

"EXEC sp_grantdbaccess 'NT AUTHORITY\NETWORK SERVICE'" 

в вашей базе данных "Phaeton".

Ответ 4

Мне понравилось решение Jed, но проблема в том, что каждый раз, когда я создавал свой проект в режиме отладки, он развертывал мой проект базы данных и снова удалял пользователя. поэтому я добавил этот MySQL script в Post-Deployment script. он фактически делает то, что сказал Джед, но создает пользователя каждый раз, когда я развертываю.

CREATE USER [NT AUTHORITY\NETWORK SERVICE]
    FOR LOGIN [NT AUTHORITY\NETWORK SERVICE]
    WITH DEFAULT_SCHEMA = dbo;
Go

EXEC sp_addrolemember 'db_owner', 'NT AUTHORITY\NETWORK SERVICE'

Ответ 5

Требуется логин SQL Server DOMAIN\machinename$. Вот как выглядит вызов NT AUTHORITY\NETWORK SERVICE для SQL Server (и файловых серверов и т.д.).

В SQL,

CREATE LOGIN [XYZ\Gandalf$] FROM WINDOWS

Ответ 6

Вы сказали, что сработало нормально, когда вы использовали выпуск SQL Express. По умолчанию экспресс-выпуски создают именованный экземпляр и запускаются в службе NT Authority\Network Service.

SQL Server STD по умолчанию устанавливает экземпляр по умолчанию и запускается в NT Authority\SYSTEM.

У вас есть полная версия SQL и версия Express, установленная на том же компьютере?

  • Возможно, что где-то строка подключения по-прежнему относится к экземпляру "SQLEXPRESS" Named, а не к экземпляру по умолчанию, созданному полной версией.

  • И где определена строка соединения? В IIS или вашем коде? Убедитесь, что, если они определены во многих местах, все указывают на один экземпляр SQL и базу данных.

  • Также попробуйте просмотреть подробную ошибку, присутствующую в журналах ошибок SQL Server. Ошибка, зарегистрированная в журнале событий, не является полной по соображениям безопасности. Это также поможет вам узнать, было ли подключение к правильному SQL Server.

  • Также убедитесь, что машина, на которой установлен SQL, доступна, и IIS пытается получить доступ к тому же компьютеру. Иногда в моей компании из-за неправильного разрешения имени запрос завершается с ошибкой, так как большинство наших компьютеров имеют SQL, и запрос попадает в неправильный SQL Server.

  • Убедитесь, что база данных существует в SQL Server. Имя, отображаемое в базах данных в SQL Management Studio, должно совпадать с именем в строке подключения.

Ответ 7

Лучший способ - создать пользователя для вашего приложения и назначить разрешения, подходящие для этого пользователя. Не используйте "NT AUTHORITY\NETWORK SERVICE", так как ваш пользователь имеет свою собственную уязвимость, и это пользователь, имеющий разрешения на столь многие вещи на уровне ОС. Держитесь подальше от этого встроенного пользователя.

Ответ 8

Я использую Entity Framework для повторной работы с моей базой данных, и пользователи получают переопределение при каждом создании моей базы данных.

Теперь я запускаю это каждый раз, когда загружаю новый DBC-текст:

cnt.Database.ExecuteSqlCommand("EXEC sp_addrolemember 'db_owner', 'NT AUTHORITY\\NETWORK SERVICE'");