Pregunta

Sé que esto es casi un duplicado de: El error "error de usuario 'NT AUTHORITY \ IUSR'" en ASP.NET y SQL Server 2008 y conexión falló para el usuario 'username' - System.Data.SqlClient.SqlException con LINQ en el exterior proyecto / biblioteca de clases pero algunas cosas no cuadran en comparación con otros appliations en mi servidor y no estoy seguro de por qué.

Cajas que se utiliza:

Box Web
Caja SQL
Caja de SQL de prueba

Mi Aplicación:

Tengo una aplicación Web ASP.NET, que hace referencia a una biblioteca de clases que utiliza LINQ a SQL. cadena de conexión configurado correctamente en la biblioteca de clases. Según conexión falló para el nombre de usuario 'usuario '- System.Data.SqlClient.SqlException con LINQ en la biblioteca de proyectos / clase externa también añadió esta cadena de conexión a la aplicación web.

La cadena conexión utiliza credenciales de SQL como tal (tanto en aplicaciones web y biblioteca de clases):

 <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" />

Esta conexión confirmó como el trabajo a través de añadirla a Explorador de servidores. Esta es la cadena de conexión de mi archivo .dbml está utilizando.

El problema:

Me sale el siguiente error:

System.Data.SqlClient.SqlException: Login failed for user 'DOMAIN\MACHINENAME$'.

Ahora referencia a este el error 'error de usuario 'NT AUTHORITY \ IUSR'' en ASP.NET y SQL Server 2008 se dice que es realmente el servicio de red local y el uso de cualquier otro nombre no es de dominio no lo hará trabajo.

Pero estoy confundido porque he comprobado tanto la caja de SQL y SQL prueba de la caja SQL Management Studio y ambos tienen NT AUTHORITY/NETWORK SERVICE en Seguridad -> Inicios de sesión, en el nivel de base de datos, que no aparece en Seguridad -> Usuarios, pero al el nivel de base de datos de seguridad -.> los usuarios que he mostrado al usuario en la cadena de conexión

A nivel de NTFS en el servidor web, los permisos tienen servicio de red tiene el control total.

La razón por la que estoy confundido es porque tengo muchas otras aplicaciones web en mi servidor web, que las bases de datos de referencia, tanto en la caja de la caja de SQL y SQL de prueba, y todos trabajan. Pero no puedo encontrar una diferencia entre ellos y mi aplicación actual, aparte de que estoy usando una biblioteca de clases. Hará que la materia? Comprobación de los permisos NTFS, la configuración de sesiones de seguridad a nivel de servidor y bases de datos, la cadena de conexión y el método de conexión (credenciales de SQL Server), y del grupo de aplicaciones IIS y otras opciones de carpeta, son todos iguales.

¿Por qué estas aplicaciones funcionan sin añadir el machinename $ a los permisos de cualquiera de mis cajas de SQL? Pero eso es lo que el enlace me está diciendo que hacer para solucionar este problema.

¿Fue útil?

Solución

servicio de red y LocalSystem se autenticarse siempre como la cuenta correpsonding localmente (orden interna \ servicio de red y orden interna \ system) pero ambos autenticará como la cuenta de máquina de forma remota.

Si un fallo como Login failed for user 'DOMAIN\MACHINENAME$' que significa que un proceso que se ejecuta como servicio de red o como LocalSystem ha tenido acceso a un recurso remoto, ha autenticado como la cuenta de la máquina y se le negó la autorización.

ejemplo típico sería una aplicación ASP que se ejecuta en un conjunto de grupo de aplicación para usar el servicio de red de credenciales y la conexión a un servidor SQL Server remoto: la piscina aplicación va a autenticar como el máquina que ejecuta el grupo de aplicación, y es esta cuenta máquina que debe concederse el acceso.

Cuando se niega el acceso a una cuenta de la máquina, a continuación, debe concederse el acceso a la cuenta de la máquina. Si el servidor se niega a inicio de sesión 'DOMINIO \ MACHINE $', entonces debe conceder derechos de acceso a 'DOMINIO \ MACHINE $' no a servicios de red. Concesión de acceso a servicio de red permitiría una locales proceso que se ejecuta como servicio de red para conectarse, no un solo mando a distancia, ya que el control remoto autenticará como, adivinaron, DOMINIO \ MACHINE $.

Si usted espera que la aplicación ASP para conectarse a SQL Server remoto como un inicio de sesión de SQL y se obtiene excepciones sobre DOMINIO \ MACHINE $ que significa que utiliza seguridad integrada en la cadena de conexión. Si esto es inesperado, significa que te equivocaste las cadenas de conexión que utilice.

Otros consejos

Este error se produce cuando se ha configurado la aplicación con IIS, IIS y va a SQL Server y trata de inicio de sesión con credenciales que no tienen permisos adecuados. Este error también puede producirse cuando la replicación o duplicación está establecido.  Voy a ir a través de una solución que funciona siempre y es muy sencillo. Ir a SQL Server >> Seguridad >> inicios de sesión y haga clic derecho en NT Authority \ Servicio de red y seleccione Propiedades

En la pantalla de reciente apertura Iniciar sesión Propiedades, vaya a la pestaña “Asignación de usuarios”. A continuación, en la ficha “Asignación de usuarios”, seleccione la base de datos deseada - en especial la base de datos para la que aparece este mensaje de error. En la pantalla inferior, compruebe que la función db_owner. Haga clic en OK.

En mi caso tuve Identity="ApplicationPoolIdentity" para mi Aplicación IIS.

Después de que el usuario añadió IIS APPPOOL\ApplicationName a SQL Server funciona.

Un colega tenía el mismo error y que era debido a un pequeño error de configuración en IIS.
El grupo de aplicaciones incorrecto fue asignado para la aplicación web.

De hecho utilizamos un grupo de aplicaciones a medida con una identidad específica para satisfacer nuestras necesidades.

En su local de Administrador de IIS -> Sitios - Sitio Web> por defecto -> Nuestra aplicación web de Nombre -> Configuración básica ... El grupo de aplicaciones fue "DefaultAppPool" en lugar de nuestra costumbre de aplicaciones.

Configuración de la piscina correcta aplicación resuelve el problema.

El truco que trabajó para mí era eliminar Integrated Security de mi cadena de conexión y añadir un User ID=userName; Password=password regular de la cadena de conexión en el App.config de tu fuerza libruary no estar usando la seguridad integrada, pero el creado en Web.config es!

he añadido a mi <identity impersonate="true" /> web.config y funcionó bien.

Básicamente para resolver este tenemos que tener algún conjunto arriba como

  • Aplicación Web que se ejecuta bajo ApplicationPoolIdentity
  • Aplicación Web que conecta a las bases de datos a través ADO.Net mediante la autenticación de Windows en la cadena de conexión

La serie de conexión se utiliza con la autenticación de Windows incluye ni Trusted_Connection=Yesattribute o el equivalente en Integrated Security=SSPI atributo de archivo Web.config

Mi conexión a la base de datos está en el modo de autenticación de Windows. Así que decidí que simplemente cambiando los Grupos de aplicaciones Identidad de ApplicationPoolIdentity a mi registro de dominio en las credenciales Nombre de dominio \ myloginid

Paso:

  1. Haga clic en piscinas aplicación
  2. Seleccione el nombre de la aplicación

  3. A Configuración avanzada

  4. Ampliar Modelo de proceso y Identidad . Haga clic tres punto en el extremo derecho.
  5. Haga clic en el botón Establecer ... y proporcionar su registro de dominio en las credenciales

Para mí fue resuelto.

Nota: En la producción o el entorno de TI, es posible que tenga cuenta de servicio en mismo dominio de identidad del grupo de aplicaciones. Si es así, el servicio usar la cuenta en lugar de su nombre de usuario.

Para mí, el problema se resolvió cuando reemplacé el predeterminado cuenta integrada 'ApplicationPoolIdentity' con una cuenta de red que se dejó el acceso a la base de datos.

Los ajustes pueden realizarse en Internet Information Server (IIS 7 +)> Grupos de aplicaciones> Configuración Advanded> Modelo de Proceso> Identidad

Para mi problema con 'DOMINIO \ MACHINENAME $' determinada estableciendo DefaultApplicationPool Identidad a NetworkService.

introducir descripción de la imagen aquí

Habíamos estado recibiendo mensajes de error similares al procesar una base de datos de Analysis Services. Resultó que el nombre de usuario, que se utiliza para ejecutar la instancia de Analysis Services, no se había añadido a la sesiones de seguridad de SQL Server.

En SQL Server 2012, los servicios de SQL Server y análisis están configurados para ejecutarse como diferentes usuarios por defecto. Si ha ido con los valores por defecto, siempre asegurarse de que el usuario AS tiene acceso a su fuente de datos!

Compruebe si tiene

User Instance=true

en la cadena de conexión. Trate de extraerlo que resolverá su problema.

también tuve este error con un servidor SQL Server autenticado el usuario

He intentado algunas de las correcciones, pero no lo hicieron el trabajo.

La solución en mi caso era para configurar su "modo de autenticación de servidor" para permitir la autenticación de SQL Server, en Administración del Estudio:. Propiedades / Seguridad

El único punto que todo el mundo parece haber pasado por alto es que es posible que desee seguridad integrada = true. Es posible que el sitio se ejecuta bajo una cuenta de grupo. Eso es todo muy bien así y es todavía posible para golpear el servidor SQL con la credencial de usuario original y no la piscina de. Se llama la delegación restringida. Si la activa y establecer un SPN ventanas se traducen las credenciales de la piscina con el usuario está en las solicitudes que van al servicio final (SQL es sólo uno de esos servicios). Hay que registrarse el único y el servidor SQL que los servicios de SQL solicitudes en el servidor web. Al establecer esta todo para arriba es demasiado para mí tratar de describir con precisión aquí. Me tomó un buen tiempo para el trabajo a través de él mismo.

Me pasó unas horas tratando de solucionar el problema y finalmente lo consiguió - el Explorador de SQL Server se "Stopped". La solución es cambiarlo al modo "automático":

  

Si está desactivada, vaya a Panel de control-> Administrativo   Herramientas> Servicios, y la mirada para el Agente SQL Server. Haga clic derecho y   seleccionar "Propiedades". En el menú desplegable "Tipo de inicio", el cambio de   "Desactivada" a "automático".

cita de aquí

Yo tenía el mismo número anterior, la eliminación de Persist Security Info=True connectionString trabajado para mí.

me encontré con este problema cuando un cliente a llamarse un servidor SQL Server. El Servicio de informe de SQL se ha configurado para conectarse con el nombre del servidor de edad, que también habían creado un alias para que redirigido a la IP del nuevo nombre del servidor.

Todas sus antiguas aplicaciones de IIS estaban trabajando, redirigiendo al nuevo nombre de servidor a través del alias. Por una corazonada, he comprobado si estuvieran corriendo SSRS. El intento de conectarse al sitio SSRS cedió el error:

"El servicio no es available.Contact el administrador del sistema para resolver el problema Los administradores del sistema:. El servidor de informes no puede conectarse a su base de datos Asegúrese de que la base de datos está en funcionamiento y accesible También puede comprobar el.. reportar el servidor de registro de seguimiento de detalles ".

Se ejecuta en el servidor, pero no para conectarse, ya que utilizaba el alias para el nombre del servidor de edad. SSRS re-configuración para utilizar el nuevo nombre del servidor en lugar de la vieja / alias fija a él.

  1. Cambiar la identidad del grupo de aplicaciones de sistema local
  2. En SQL Gestión de> Seguridad> Inicios de sesión
    1. Encuentra NT AUTHORITY \ SYSTEM doble click
    2. Asignaciones de usuarios> Compruebe su base de datos y darle un papel más adelante.
    3. Recuerde también para crear la base de datos del usuario o sesiones de seguridad con una contraseña correcta.

Tengo este error al intentar probar una solución utilizando la siguiente

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

La forma en que fue resuelto:. Tuve que abrir Visual Studio y ejecutarlo con otra cuenta, porque la cuenta de que estaba usando abrir no era mi cuenta de administrador

Así que si su problema es similar a la mía: pin los SV de la barra de tareas, a continuación, utilizar Shift y hacer clic derecho para abrir el menú para que pueda abrir VS como otro usuario. introducir descripción de la imagen aquí

Apreciar hay algunas respuestas buenas aquí, pero como acabo de perder tiempo de trabajo esto, espero que esto pueda ayudar a alguien.

En mi caso, todo lo que había sido trabajando bien, pero se detuvo sin razón aparente con el error se indica en la pregunta.

IIS se ejecuta como un servicio de red y de servicio de red se ha establecido en SQL Server previamente (ver otras respuestas a este post). funciones de servidor y las correlaciones de usuario parecían correcta.

El problema era; por razones absolutamente ninguna aparente; Servicio de red había cambiado a 'Denegar' derechos de acceso en la base de datos.

Para fijar:

  1. Abrir SSMS> Seguridad> Inicios de sesión.
  2. Haz clic derecho 'AUTORIDAD \ SERVICIO DE RED NT' y haga clic en Propiedades.
  3. Ir a la pestaña 'Estado' y el conjunto Permission to Connect To Database Engine Para Grant '.

compañía Con servicio de red

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top