none
¿Cómo puedo hacer una conexión del Visual Studio.NET a una base de datos de SQL Server? RRS feed

  • Pregunta

  • Tengo instalado en el PC el Microsoft SQL Server Management Studio 2017, y de momento parece que me está funcionando bien (cruzo los dedos). Me hice una base de datos para hacer mis pruebas con el lenguaje SQL, tengo en ella varias tablas de entidades, varias tablas de relaciones, las conexiones y los diagramas, y parece que todo va bien, al menos en lo que yo he probado hasta ahora.

    Vale, ahora el problema viene cuando intento hacer una conexión a la base de datos desde el Visual Studio 2017. Estoy en el explorador de servidores, voy a "Conexiones de datos", abro el menú contextual y selecciono "Agregar conexión...".

    Me sale el cuadro de "Elegir origen de datos", así que en el ListBox que se llama "Origen de datos", hay aparentemente dos elementos que parece que me pueden servir:

    * Archivo de base de datos de Microsoft SQL Server.

    * Microsoft SQL Server.

    Un paréntesis. Al ver que no funcionaba la conexión, intenté en todos los casos enlazar con el archivo mdf de base de datos, pero no me dejaba, y me salía un mensaje diciéndome lo siguiente: "No tiene permisos para abrir este archivo. Solicite permisos al propietario del archivo o a un administrador". Estuve buscando en Google este error, y por lo visto el problema era que no se puede enlazar con un archivo mdf, sino que tienes que enlazar con la base de datos (la base de datos como un "ente abstracto", y ese ente abstracto ya se encarga de conectar ello solo con el archivo mdf, pero tú ese archivo mdf no lo puedes tocar, sino que tengo que enlazar con la base de datos).

    Otro paréntesis. La autenticación que selecciono siempre es la autenticación de Windows, que es la que selecciono cuando abro el Microsoft SQL Server Management Studio.

    Pues bien, voy a la primera opción: "Archivo de base de datos de Microsoft SQL Server". Sólo te da la opción de seleccionar un archivo, y cuando voy al archivo no me deja, por el error que dije antes de que no se puede acceder directamente al archivo, sino indirectamente, a través de la base de datos, para que sea la base de datos la que conecte con el archivo.

    Pasamos al plan B. En el ListBox "Origen de datos", selecciono "Microsoft SQL Server". Debajo, en la lista desplegable titulada "Proveedor de datos", tengo la opción de OLEDB, y la opción del servidor SQL Server. Voy a seleccionar esta segunda opción. Ahora me sale el cuadro "Agregar conexión". En la lista desplegable titulada "Nombre del servidor", selecciono la única opción que me sale, que es el servidor "CARLITOS". Bien. Debajo, en la lista desplegable titulada "Seleccionar o escribir el nombre de la base de datos", le doy a la flechita y me pone debajo "Cargando nombres de bases de datos...", y me sale el siguiente error:

    "Error relacionado con la red o específico de la instancia mientras se establecía una conexión con el servidor SQL Server. No se encontró el servidor o éste no está accesible. Compruebe que el nombre de la instancia es correcto y que SQL Server está configurado para admitir conexiones remotas. (provider: Named Pipes Provider, error: 40 - No se pudo abrir una conexión con SQL Server)".

    Vale, ahora pasamos al plan C. Volviendo a seleccionar "Microsoft SQL Server" en el ListBox "Origen de datos", esta vez en la lista desplegable titulada "Proveedor de datos", eligo la opción de OLEDB. Después, en el cuadro de "Agregar conexión", selecciono el servidor "CARLITOS" como antes, voy a la lista desplegable titulada "Seleccionar o escribir el nombre de la base de datos", nuevamente pone "Cargando nombres de bases de datos...", y después de cargar los nombres de bases de datos, no me da mensaje de error pero tampoco encontró ninguna base de datos. Bien, entondes escribo a pelo el nombre de la base de datos, que es "Coches". Le doy a "Probar conexión", y me sale el siguiente mensaje de error:

    "Logint timeout expired. A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online. Named Pipes Provider: Could not open a connection to SQL Server [2]".

    Si en lugar de darle a "Probar conexión" le doy a "Aceptar", me pasa lo mismo.

    ¿Alguien que pueda orientarme, por favor?

    Gracias por la atención, y perdón por las molestias.



    Carlos Martínez Trueba.

    sábado, 22 de julio de 2017 21:09

Respuestas

  • A la vista del mensaje de error, me da la sensación de que hay un espacio en blanco a la izquierda del primer paréntesis.

    Otras alternativas que puedes probar con "localhost", el nombre de la máquina, o simplemente "." (un punto). Todas ellas funcionan si tienes instalada una instancia predeterminada, pero ninguna funcionará si se trata de una instancia con nombre. De ser así, hay que añadir una contrabarra y el nombre de la instancia, por ejemplo, "(local)\MiInstancia".

    Otra cosa: Dices que desde SQL Server Management Studio sí que te conectas y funciona. Fíjate en la ventanita de login del SSMS qué es lo que pones en el nombre de servidor cuando te conectas. Eso mismo exactamente lo puedes copiar y pegar en Visual Studio y tiene que funcionar igual.

    • Marcado como respuesta Moderador M viernes, 28 de julio de 2017 18:45
    domingo, 23 de julio de 2017 10:04

Todas las respuestas

  • Primero: La opción "Archivo de base de datos..." solo sirve para conectar a un .mdf que no esté montado en el servidor SQL Server. En su lugar, lo monta "sobre la marcha" con la edición Express de SQL Server (si es que la instalaste al instalar Visual Studio) en modo user-instance.

    Segundo: La opción buena para conectar a una base de datos existente es la de "añadir servidor SQL" en el explorador de objetos de SQL server:

    Captura de pantalla

    Te preguntará que a qué servidor quieres conectarte. Escribe "(local)" (no saldrá en la lista, tecléalo, incluyendo los paréntesis pero no las comillas). Esto presume que instalaste tu SQL Server como instancia predeterminada, de lo contrario hace falta añadir el nombre de la instancia.

    Después te preguntará la autenticación (deja la de Windows) y te saldrá el desplegable de bases de datos, donde sí que tiene que aparecer la tuya.

    sábado, 22 de julio de 2017 22:12
  • Muchísimas gracias por la ayuda y por las molestias, Alberto.

    He probado a hacer lo que me dices, pero no me funciona, aquí te agrego una foto

    ¿Qué ha podido salir mal?

    Muchas gracias.

    Carlos.


    Carlos Martínez Trueba.


    • Editado Carlos Mtz domingo, 23 de julio de 2017 0:40
    sábado, 22 de julio de 2017 23:55
  • A la vista del mensaje de error, me da la sensación de que hay un espacio en blanco a la izquierda del primer paréntesis.

    Otras alternativas que puedes probar con "localhost", el nombre de la máquina, o simplemente "." (un punto). Todas ellas funcionan si tienes instalada una instancia predeterminada, pero ninguna funcionará si se trata de una instancia con nombre. De ser así, hay que añadir una contrabarra y el nombre de la instancia, por ejemplo, "(local)\MiInstancia".

    Otra cosa: Dices que desde SQL Server Management Studio sí que te conectas y funciona. Fíjate en la ventanita de login del SSMS qué es lo que pones en el nombre de servidor cuando te conectas. Eso mismo exactamente lo puedes copiar y pegar en Visual Studio y tiene que funcionar igual.

    • Marcado como respuesta Moderador M viernes, 28 de julio de 2017 18:45
    domingo, 23 de julio de 2017 10:04