2010-02-12 28 views
30

He estado luchando con esto durante 2 días sin tener que acercarse a la solución. He leído 20-30 hilos alterados y todavía no puedo resolver esto.Falló el inicio de sesión para el usuario 'NT AUTHORITY NETWORK SERVICE'

Por favor, ayúdenme.

He deshabilitado la autenticación anónima, habilite la suplantación de asp.net.

He añadido <identity impersonate = "true" />

He añadido el usuario para las sesiones de seguridad que está conectado a la base de datos intento conectar a

Este es el connectionstring que utilizo:

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

errormensaje:

No se puede abrir la base de datos "Phaeton.mdf" solicitada por th e inicio de sesión El inicio de sesión falló.

Falló el inicio de sesión para el usuario 'NT AUTHORITY \ NETWORK SERVICE'.

+0

Se puede publicar el código que está utilizando para conectarse a la base de datos? –

+0

Uso NHIbernate, este sitio ha funcionado en mi servidor antes de cambiar a servidor sql en lugar de sql server express –

+0

Simplemente siga los procedimientos en ASP.NET y SQL Server, http://msdn.microsoft.com/ en-us/library/ms978512.aspx Existen las formas recomendadas para conectarse a SQL Server. Saludos, –

Respuesta

8

El mensaje de error que está recibiendo le indica que la aplicación no se pudo conectar a sqlexpress db, y no al servidor sql. Voy a cambiar el nombre de la base de datos en el servidor sql y luego actualizar la conexión en consecuencia y probarlo de nuevo.

Su mensaje de error indica lo siguiente:

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

A mi me parece que todavía está intentando conectarse a la base de datos en el archivo, el nombre de "Phaeton.mdf" no coincide con el nuevo nombre de la base de datos SQL "Faetón".

Espero que esto ayude.

+0

, muchas gracias. Eché de menos totalmente que la base de datos que intenté usar era sqlexpress. –

2

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

En SQL,

CREATE LOGIN [XYZ\Gandalf$] FROM WINDOWS 
+1

¿Puede ser más específico de lo que debo hacer? porque esto no tiene sentido para mí (realmente no :)) –

2

Usted dijo que funcionaba bien cuando lo estaba utilizando edición de SQL Express. Por defecto, las ediciones express crean una instancia con nombre & en NT Authority \ Network Service.

SQL Server STD instala de forma predeterminada una instancia predeterminada & ejecutada en NT Authority \ SYSTEM.

¿Tiene la edición completa de SQL & Express edition instalada en la misma máquina?

  1. Podría ser que en alguna parte de la cadena de conexión todavía se refiere a la instancia 'SQLEXPRESS' nombrado en lugar de la instancia por defecto creado por la versión completa.

  2. ¿Dónde se define 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 de SQL & base de datos.

  3. También intente observar 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. También asegúrese de que la máquina en la que está instalado SQL es accesible & IIS intenta acceder a la misma máquina. En mi compañía a veces debido a una resolución de nombre incorrecta, la consulta falla, ya que la mayoría de nuestras computadoras tienen instalado SQL &, la consulta aterriza en el servidor SQL incorrecto.

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

+0

Solo tengo el servidor sql en esta computadora servidor. Solo hice la conexión en mi archivo Web.Config. Trataré de mirar el archivo de registro ahora y ver si recibo un error más específico. la base de datos está conectada al servidor sql y creé un usuario que se supone debe usarlo. De alguna manera, solo sigue para NT Auth .. cuando quiero usar auth de autenticación de sql –

80

que estaba experimentando un mensaje de error similar que he notado en el Visor de eventos de Windows leyó:

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

La solución que se resolvió mi problema era:

  1. sesión en SqlExpress a través de SQL Server Management Studio
  2. Ir al directorio "Seguridad" de la base de datos de
  3. Haga clic con el directorio de usuarios
  4. Seleccione "nuevo usuario ..."
  5. Add 'NT AUTHORITY \ NETWORK' como un nuevo usuario
  6. En el área de la pertenencia a funciones de datos, seleccione db_owner
  7. Haga clic en OK

Aquí hay una captura de pantalla de lo anterior: Screenshot of adding new user Network Service as db_owner to SqlExpress

+2

Mi voto primero, de hecho, esta idea es la que finalmente funcionó para mí, gracias, pero el nombre de usuario no importa, es el nombre de usuario que seleccione, que debe ser NT AUTHORITY \ NETWORK SERVICE. Una cosa más es usar \ char en el nombre de usuario no está permitido con mi SQL Server Express (2005) (no estoy seguro si es así para el SQL en su conjunto). Gracias de nuevo ! – Mubarek

+0

¡Oh, eso es increíble! No puedo creer que funcionó. Hasta la votación, y si tuviera suficientes puntos, le daría la marca de verificación de respuesta. – Lukas

+1

Sé que esta pregunta tiene casi cuatro años, pero estoy muy agradecido de haberla encontrado. He estado tratando de encontrar la manera de acceder a una base de datos externa durante tres días, y me han sorprendido en varios puntos del camino. ¡Este fue el último obstáculo! Solía ​​trabajar con un ingeniero que solía decir que la parte más difícil del código de escritura era pasar las gárgolas en la puerta de embarque. Esta fue mi última gárgola. ¡Gracias! –

6

me gustó solución de Jed, pero el problema con que era cada vez construí mi proyecto en modo de depuración, implementaría mi proyecto de base de datos y eliminaría al usuario 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' 
+0

Me salvaste. He usado: NT AUTHORITY \ SYSTEM – ilans

7

Si el mensaje de error es sólo

"conexión falló para el 'NT AUTHORITY \ NETWORK SERVICE' usuario.", A continuación, conceder el permiso de inicio de sesión 'NT AUTHORITY \ NETWORK SERVICE'

utilizando

"sp_grantlogin 'NT AUTHORITY\NETWORK SERVICE'" 

más si la economía de mercado de error sabio es como

"No se puede abrir la base de datos" Phaeton.mdf "solicitada por el inicio de sesión. El inicio de sesión ha fallado.Conexión falló para el 'NT AUTHORITY \ NETWORK' usuario ".

intentar usar

"EXEC sp_grantdbaccess 'NT AUTHORITY\NETWORK SERVICE'" 

debajo de la "base de datos Phaeton".

+0

tu respuesta funciona para mí –

1

La mejor manera es crear un usuario para su aplicación y asigne 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. en usuario.

0

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

Ahora corro esto cada vez que se carga una nueva DBContext:

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