Ошибка входа для пользователя "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".
Ответы
Ответ 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'");