none
Problemas al Conectar aplicación C# con Base de Datos SQL SERVER en otro ordenador RRS feed

  • Pregunta

  • Buenos días. Soy nuevo en C#. He realizado una aplicación en Visual Studio 2019 utilizando sistema operativo Windows 7 / 64, la cual  actúa conjuntamente con base de datos SQL Server (Tengo instalado SQL Express 2014). La aplicación se encuentra terminada y completamente funcional en mi ordenador. He creado en instalador con las herramientas de Visual Studio. Instala perfectamente en otros ordenadores pero al abrir la aplicación, esta no se conecta con el servidor de base de datos instalado en el mismo equipo.

    Acciones realizadas:

    Mi Cadena de conexión  es : Data Source=localhost;Initial Catalog =  verticaladminmod; Integrated Security=True. Anteriormente intenté con : Data Source = .; Initial Catalog =  verticaladminmod; Integrated Security = True. Al publicar, incluyo solamente como prerrequisito “Microsoft .NET Framework 4.72” que es el que utilizo en la producción de la aplicación.

    La computadora donde se instala la aplicación tiene Windows 10 + SQL Server Management Studio 2012 (el cual abre su motor de base de datos perfectamente en local).

    Adicionalmente, con el Configuration Manager, dentro de SQL Server Network Configuration – Protocols for MSSQLSERVER – tengo “Named Pipes” en Enabled y tengo TCP/IP Enabled = “yes” y tengo IP Addresses “IPAll” en el puerto 1433.

    Desactivo completamente el antivirus Norton para descartar que sea un problema de configuración del firewall del mismo. El antivirus administra el firewall de Windows.

    Al abrir la aplicación aparece el mensaje: “Cannot open database “verticaladminmod” requested by the login. The login failed. Login failed for user <Nombre del computador>”

    Necesito saber que otros chequeos puedo hacer para encontrar el problema y si es posible consejos para futuras instalaciones.

    Muchas gracias   

    sábado, 21 de noviembre de 2020 15:46

Todas las respuestas

  • Al abrir la aplicación aparece el mensaje: “Cannot open database “verticaladminmod” requested by the login. The login failed. Login failed for user <Nombre del computador>”

    Necesito saber que otros chequeos puedo hacer para encontrar el problema y si es posible consejos para futuras instalaciones.

    Todos los chequeos que has mencionado se refieren a conectividad de red. Pero el mensaje de error que te sale no es de conectividad. Eso genera un mensaje distinto. De lo que se queja es de las credenciales. Cerciórate de que en el SQL Server al que te estás conectando has creado un Login que coincida con la cuenta que está usando el programa, y que ese login tiene permisos suficientes sobre la base de datos a la que te conectas.

    Dado que has puesto Integrated Security=true, te usará la cuenta del usuario actual si es una aplicación de escritorio, o la cuenta de servicio si es un Servicio Windows, o la cuenta del Pool si es una aplicación web en IIS. Esa es la cuenta que tienes que crear como Login en SQL Server.

    sábado, 21 de noviembre de 2020 16:17
    Moderador
  • Hola Oscar Rossi Scottini,

    ¿Alguna novedad sobre tu pregunta? ¿Han sido útiles las respuestas proporcionadas? Por favor no olvides marcar una respuesta si resolviste tu consulta (debajo de cada post hay una opción que dice "Marcar como respuesta").

     

    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    lunes, 23 de noviembre de 2020 18:22
    Moderador
  • Alberto antes que todo muchas gracias por tu gentil respuesta. Tengo claro que se trata de un problema de credenciales. He intentado varias veces resolverlo tratando de crear un login o un usuario en la maquina donde esta fallando el login desde <SQL Management Studio - Security - Logins - New Login>. En verdad no tengo claro como hacerlo. Me ayudaría si fuera posible alguna orientación de detalle sobre los pasos a seguir. Nuevamente muchas gracias.    
    lunes, 23 de noviembre de 2020 22:11
  • Sí, está bien lo de crear un login desde  <SQL Management Studio - Security - Logins - New Login>.

    Pero la cuestión es que antes de eso hay que saber cuál es el login que tienes que crear. Para eso se necesita saber qué clase de aplicación es y cómo está configurada. De ahí los tres casos que te mencionaba al principio, de los que habría que saber cuál es el aplicable a tu programa.

    Y luego también hay que saber más cosas, tales como si la máquina cliente y la que alberga el SQL pertenecen a un mismo dominio de directorio activo. De no ser así, el SQL Server no puede reconocer la cuenta del cliente llamante. En ese caso no se puede usar la autenticación integrada y hay que cambiar a autenticación de SQL Server.

    martes, 24 de noviembre de 2020 12:49
    Moderador
  • Alberto nuevamente muchas gracias por tu tiempo.

    Se trata de una aplicación de escritorio, realizada en una PC en mi casa, sin otros usuarios ni redes. Tiene la instalación normal de SQL Server Express 2014. La otra maquina donde se instala la aplicación es una lap top también en mi casa sin otros usuarios ni redes y tiene instalado SQL Server Express 2012. Lo que estoy intentando es desarrollar un instalador que después pueda aplicarse a cualquier computador que tenga windows. Aquí adjunto algunos datos que espero sean relevantes.

    Mi maquina:

    • Name “MI_PC-PC”
    • Owner: “MI_PC-PC\MI_PC”
    • Database: “verticaladminmod”
    • Connection string: Data Source=localhost;Initial Catalog=verticaladminmod;Integrated Security=True
    • Windows 7 64 bit
    • SQL Server 2014 Express, instancia “SQL Server (MSSQLSERVER)”

    Otra maquina donde instalo la aplicación:

    • Name “FINA-PC”
    • User Name: “Fina-PC\Fina”
    • Windows 7 32 bit
    • SQL Server 2012 Express, instancia “SQL Server (MSSQLSERVER)”

    Muy agradecido

           
    miércoles, 25 de noviembre de 2020 1:06
  • Hola!, Al parecer tuve un problema similar, lo resolví instalando sql server en la maquina donde instale el programa cargue la base de datos y copie la dirección de la conexión en la cadena de conexión y me funciono, espero te sirva. 
    miércoles, 25 de noviembre de 2020 4:42
  • Bien, vamos afinando. Entonces, según lo entiendo, cada PC tiene su propia instalación del servidor de base de datos, y en cada uno se ejecuta el programa que tiene que acceder a su propia copia local de SQL Server, es decir, no estás intentando que el programa que se ejecuta en un PC acceda al SQL Server que se encuentra en el otro PC, ¿verdad?

    En ese caso, y con los datos que has puesto, es correcto que la cadena de conexión indique Data Source=localhost, o incluso Data Source=. o Data Source=(local).

    Ahora el problema está con la parte de Integrated Security=True. Esto indica que el propio usuario que ejecuta la aplicación es el que se usa para hacer login en SQL Server. Siendo una aplicación de escritorio, ese usuario es el mismo que ha hecho login en Windows.

    Para que eso funcione, es necesario añadir dicho usuario como Login en SQL Server. Esto no ocurre de manera predeterminada, ni siquiera aunque el usuario sea administrador de la máquina. Es necesario añadir el usuario expresamente. Esto se puede hacer desde SSMS con la opción New Login. Tiene que funcionar; si ya lo has intentado y no funciona, tiene que faltar alguna opción que no has configurado bien. Asegúrate de entrar en la pestaña de "mappings" y mapear el usuario a la base de datos verticaladminmod, y darle suficientes permisos sobre ella.

    miércoles, 25 de noviembre de 2020 8:38
    Moderador