Sé que esto es casi un duplicado de: El error "Error de inicio de sesión para el usuario 'NT AUTHORITY \ IUSR'" en ASP.NET y SQL Server 2008 y error de inicio de sesión para el usuario 'nombre de usuario' - System.Data.SqlClient.SqlException con LINQ en Proyecto externo / biblioteca de clases, pero algunas cosas no cuadran en comparación con otras aplicaciones en mi servidor y no estoy seguro de por qué.
Cajas que se utilizan:
Caja web Caja
SQL Caja de
prueba SQL
Mi aplicación:
Tengo una aplicación web ASP.NET, que hace referencia a una biblioteca de clases que usa LINQ-to-SQL. Cadena de conexión configurada correctamente en la biblioteca de clases. Según el inicio de sesión fallido para el usuario 'nombre de usuario' - System.Data.SqlClient.SqlException con LINQ en un proyecto externo / biblioteca de clases , también agregué esta cadena de conexión a la aplicación web.
La cadena de conexión usa credenciales SQL como tal (tanto en la aplicación web como en la 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" />
Se confirmó que esta conexión funciona al agregarla al Explorador de servidores. Esta es la cadena de conexión que usa mi archivo .dbml.
El problema:
Obtuve el siguiente error:
System.Data.SqlClient.SqlException: Login failed for user 'DOMAIN\MACHINENAME$'.
Ahora haciendo referencia a esto el error "Error de inicio de sesión para el usuario 'NT AUTHORITY \ IUSR'" en ASP.NET y SQL Server 2008 dice que es realmente el servicio de red local y que el uso de cualquier otro nombre que no sea de dominio no funcionará.
Pero estoy confundido porque he marcado SQL Box y SQL Test Box SQL Management Studio y ambos tienen NT AUTHORITY/NETWORK SERVICE
en Seguridad -> Inicios de sesión, en el nivel de la base de datos, que no aparece en Seguridad -> Usuarios, pero en el nivel de la base de datos Seguridad -> Usuarios Tengo el usuario mostrado en la cadena de conexión.
A nivel NTFS en el servidor web, los permisos tienen el SERVICIO DE RED tiene control total.
La razón por la que estoy confundido es porque tengo muchas otras aplicaciones web en mi servidor web, que hacen referencia a bases de datos tanto en SQL Box como en SQL Test Box, y todas funcionan. Pero no puedo encontrar una diferencia entre ellos y mi aplicación actual, aparte de que estoy usando una biblioteca de clases. ¿Importará eso? La verificación de los permisos NTFS, la configuración de los inicios de sesión de seguridad en los niveles del servidor y de las bases de datos, la cadena de conexión y el método de conexión (credenciales de SQL Server), el grupo de aplicaciones IIS y otras opciones de carpeta son todos iguales.
¿Por qué estas aplicaciones funcionan sin agregar el nombre de máquina $ a los permisos de cualquiera de mis cuadros SQL? Pero eso es lo que me dice el enlace para solucionar este problema.