Error de inicio de sesión para el usuario ‘NT AUTHORITY \ NETWORK SERVICE’

He estado luchando con esto durante 2 días sin acercarse más a la solución. He leído 20-30 hilos alterados y todavía no puedo resolver esto.

Por favor, ayúdame.

Deshabilité la autenticación anónima, habilité la suplantación asp.net.

He añadido

He agregado un usuario a los inicios de sesión de seguridad que están conectados a la base de datos a la que bash conectarme.

Esta es la conexión que uso:

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

mensaje de error:

No se puede abrir la base de datos “Phaeton.mdf” solicitada por el inicio de sesión. El inicio de sesión falló.

Error de inicio de sesión para el usuario ‘NT AUTHORITY \ NETWORK SERVICE’.

El mensaje de error que está recibiendo le dice que la aplicación no se pudo conectar a sqlexpress db, y no al servidor SQL. Simplemente cambiaré el nombre del servidor de base de datos en sql y luego actualizaré la conexión de manera correspondiente y lo intentaré de nuevo.

Su mensaje de error dice lo siguiente:

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

Me parece que todavía está tratando de conectarse a la base de datos basada en archivos, el nombre “Phaeton.mdf” no coincide con su nuevo nombre de base de datos sql “Phaeton”.

Espero que esto ayude.

Estaba experimentando un mensaje de error similar que noté en el Visor de eventos de Windows que decía:

Error de inicio de sesión para el usuario ‘NT AUTHORITY \ NETWORK SERVICE’. Motivo: no se pudo abrir la base de datos explícitamente especificada. [CLIENTE: máquina local]

La solución que resolvió mi problema fue:

  1. Inicie sesión en SqlExpress a través de SQL Server Management Studio
  2. Vaya al directorio “Seguridad” de la base de datos
  3. Haga clic derecho en el directorio de usuarios
  4. Seleccione “Nuevo usuario …”
  5. Agregue ‘NT AUTHORITY \ NETWORK SERVICE’ como un nuevo usuario
  6. En el área Membresía del rol de datos, seleccione db_owner
  7. Haga clic en Aceptar

Aquí hay una captura de pantalla de lo anterior: Captura de pantalla de agregar un nuevo servicio de red de usuario como db_owner a SqlExpress

Si el mensaje de error es solo

“Error al iniciar sesión para el usuario ‘NT AUTHORITY \ NETWORK SERVICE’.”, Luego otorgue el permiso de inicio de sesión para ‘NT AUTHORITY \ NETWORK SERVICE’

mediante el uso

 "sp_grantlogin 'NT AUTHORITY\NETWORK SERVICE'" 

de lo contrario, si el mensaje de error es como

“No se puede abrir la base de datos” Phaeton.mdf “solicitada por el inicio de sesión. Error de inicio de sesión. Error al iniciar sesión para el usuario ‘NT AUTHORITY \ NETWORK SERVICE’.”

intenta usar

 "EXEC sp_grantdbaccess 'NT AUTHORITY\NETWORK SERVICE'" 

en su base de datos “Phaeton”.

Me gustó la solución de Jed, pero el problema era que cada vez que construía mi proyecto en modo de depuración, implementaba mi proyecto de base de datos y lo eliminaba nuevamente. así que agregué este script MySQL al script Post-Deployment. prácticamente hace lo que dice Jed pero crea al usuario cada vez que lo despliego.

 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' 

Dijiste que funcionó bien cuando usabas la edición SQL Express. Por defecto, las ediciones express crean una instancia con nombre y se ejecutan en NT Authority \ Network Service.

SQL Server STD instala de forma predeterminada una instancia predeterminada y se ejecuta en NT Authority \ SYSTEM.

¿Tiene la edición SQL completa y la edición Express instaladas en la misma máquina?

  1. Podría ser que en algún lugar la cadena de conexión todavía se refiere a la instancia con nombre ‘SQLEXPRESS’ en lugar de a la instancia predeterminada creada por la versión completa.

  2. ¿También dónde está definida la cadena de conexión? En IIS o tu código? Asegúrese de que, si está definido en muchos lugares, todos apunten a la misma instancia y base de datos de SQL.

  3. También intente ver el error detallado presente en los registros de errores de SQL Server. El error registrado en el registro de eventos no está completo por razones de seguridad. Esto también lo ayudará a saber si la conexión se realizó al servidor SQL correcto.

  4. Además, asegúrese de que la máquina en la que está instalado SQL esté accesible e IIS esté intentando acceder a la misma máquina. En mi empresa a veces debido a una resolución de nombre incorrecta, la consulta falla, ya que la mayoría de nuestras computadoras tienen SQL instalado y la consulta aterriza en el servidor SQL incorrecto.

  5. Asegúrese de que la base de datos exista en SQL Server. El nombre que se muestra en las bases de datos en SQL Management Studio debe coincidir con el de la cadena de conexión.

El inicio de sesión de SQL Server requerido es DOMAIN\machinename$ . Esta es la forma en que aparece el servicio NT AUTHORITY\NETWORK SERVICE llama a SQL Server (y servidores de archivos, etc.)

En SQL,

 CREATE LOGIN [XYZ\Gandalf$] FROM WINDOWS 

La mejor manera es crear un usuario para su aplicación y asignar los permisos adecuados para ese usuario. No use ‘NT AUTHORITY \ NETWORK SERVICE’ ya que su usuario tiene su propia vulnerabilidad y es un usuario que tiene permisos para tantas cosas en el nivel del sistema operativo. Manténgase alejado de este usuario integrado.

Estoy utilizando Entity Framework para repupular mi base de datos, y los usuarios quedan anulados cada vez que genero mi base de datos.

Ahora ejecuto esto cada vez que cargo un nuevo DBContext:

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