El inicio de sesión SQL falla para la aplicación pero no para SSMS

El inicio de sesión SQL falla para la aplicación pero no para SSMS

Escribí una aplicación de prueba sencilla en C# (4.5) que no hace más que conectarse a una base de datos y mostrar un mensaje. (Básicamente, solo para probar la implementación y la conexión a la base de datos). En mi estación de trabajo local, todo funciona bien. Instalé SQL Express 2012, me conecté como usuario actual (seguridad integrada), sin problemas.

Sin embargo, cuando se implementa en Windows Server 2008, la aplicación no puede conectarse a la base de datos. Sigue apareciendo un error de inicio de sesión fallido.

En el servidor seguí la misma instalación para SQL Express 2012. Inicié sesión como Administrador cuando ejecuto la aplicación de consola. Incluso intenté activar la autenticación en modo mixto, crear un usuario y conectarme como ese usuario. Puedo conectarme en SQL Management Studio, pero la aplicación siempre recibe un error de inicio de sesión fallido.

¿Existe alguna configuración de seguridad oculta en Windows Server 2008 que deba modificar para permitir que una aplicación .NET se conecte a un servidor SQL? ¿Qué podría causar este comportamiento en el que puedo iniciar sesión en la base de datos mediante SSMS pero no mediante una aplicación?

Error:

System.Data.SqlClient.SqlException (0x80131904): No se puede abrir la base de datos "TestDatabase" solicitada por el inicio de sesión. El inicio de sesión falló. Error de inicio de sesión para el usuario 'sa'.

Naturalmente, esta es la versión del error cuando intenté conectarme como sauna especie de último esfuerzo para realizar la prueba. El mismo error ocurre tanto para TestUser(un usuario de SQL que creé para esto) como para PERSONALSERVER\Administrator(el usuario que inició sesión actualmente y ejecuta la aplicación).

Las cadenas de conexión que he probado son:

  • Data Source=localhost\sqlexpress2012;Initial Catalog=TestDatabase;Integrated Security=True
  • Data Source=localhost\sqlexpress2012;Initial Catalog=TestDatabase;User Id=TestUser;Password=testpassword

Respuesta1

En el administrador de configuración, asegúrese de que TCP/IP y Named Pipes estén habilitados.

En el panel de control, intente crear una conexión SQL con el controlador de SQL Server (en Herramientas administrativas) -> Fuentes de datos, ya que esto solo probará una conexión local con muy pocas variables (por ejemplo, su código (que estoy seguro está escrito perfectamente). :) ))

Además, ¿tiene 2 lugares en los que hace referencia a su cadena de conexión (yo he hecho esto)? se guardó en mi archivo app.config y como una cadena en mi código (o incluso una cadena de recursos).

Conéctese a través de la dirección IP en lugar del nombre de la computadora (esto significa actualizar también su cadena de conexión; detalles sobre cómo al final de esta publicación).

Por último, actualice su cadena de conexión a

Fuente de datos=.\sqlexpress2012; Catálogo inicial=Base de datos de prueba; Seguridad integrada=SSPI; ID de usuario=miDominio\miNombre de usuario; Contraseña=miContraseña;

o pruébalo con:

Servidor=.\sqlexpress2012; Base de datos=Base de datos de prueba; Trusted_Connection=Verdadero;

Asumiré que el usuario tiene derechos efectivos sobre la base de datos en cuestión. :)

Asegúrese de que los puertos SQL, normalmente 1433 y 1434, estén abiertos.

Inicie sesión en SSMS con el nombre de usuario/contraseña para asegurarse de que tengan permisos.

www.ConnectionStrings.com- ¡Excelente recurso para cadenas de conexión! :)

información relacionada