Compartir a través de


Conexión a SQL Database mediante C y C++

Se aplica a:Azure SQL Database

Este artículo ayuda a los desarrolladores de C y C++ a conectarse a Azure SQL Database.

Requisitos previos

Necesita lo siguiente para completar los pasos de esta guía:

  • Una cuenta de Azure activa. Si no tiene una, puede registrarse para obtener una prueba gratuita de Azure.
  • Visual Studio. Debe instalar los componentes del lenguaje C++ para compilar y ejecutar este ejemplo.
  • Visual C++ for Linux Development (Visual C++ para el desarrollo de aplicaciones para Linux). Si está desarrollando en Linux, también debe instalar la extensión de Visual Studio para Linux.

Tecnologías de acceso a datos: ODBC y OLE DB

Actualmente hay dos formas de conectarse a las bases de datos de Azure SQL: ODBC (Open Database Connectivity) y OLE DB (Object Linking and Embedding database). En los últimos años, Microsoft se ha alineado con ODBC para el acceso a datos relacionales nativos. ODBC es mucho más rápido que OLE DB. El único inconveniente aquí es que ODBC utiliza una API de estilo C anterior.

Creación de su instancia de Azure SQL Database

Vea la página de introducción para aprender a crear una base de datos de ejemplo.

Obtención de la cadena de conexión

Después de aprovisionar la instancia de Azure SQL Database, debe seguir estos pasos para determinar la información de conexión y agregar la dirección IP de cliente para el acceso de firewall.

  1. En el portal de Azure, vaya a las cadenas de conexión de Azure SQL Database usando la opción Mostrar cadenas de conexión de base de datos que se encuentra como parte de la sección Visión general de su base de datos:

    Captura de pantalla de Azure Portal de una página de información general de SQL Database. El vínculo mostrar cadenas de conexión de base de datos está resaltado.

  2. Seleccione la pestaña ODBC .

    Captura de pantalla del portal de Azure de una cadena de conexión ODBC.

  3. Copie el contenido de la cadena ODBC (Incluye Node.js) [autenticación de SQL] . Esta cadena se usará más adelante para conectarse desde el intérprete de línea de comandos ODBC de C++. Esta cadena proporciona detalles como el controlador, el servidor y otros parámetros de conexión de base de datos.

Incorporación de la IP al firewall

  1. Vaya al servidor lógico de Azure SQL Database. Seleccione el vínculo Nombre del servidor en la página Información general de la base de datos SQL o vaya a ella a través de la búsqueda de Azure Portal.
  2. En Seguridad, seleccione Redes.
  3. En la pestaña Acceso público , seleccione Redes seleccionadas si aún no.
  4. Agregue la dirección IP del cliente al firewall mediante estos pasos para asegurarse de que podemos establecer una conexión correcta. Seleccione Agregar la dirección IPv4 de cliente o agregue una regla de firewall.

En este momento, ha configurado su base de datos SQL de Azure y está listo para conectarse desde su código de C++ ejecutado en la estación de trabajo.

Sugerencia

Agregar la dirección IP de la estación de trabajo del cliente al firewall de red pública es aceptable para una configuración temporal de laboratorio o aprendizaje, pero para una solución empresarial o un proyecto de larga duración, siga estos procedimientos recomendados de seguridad:

  • Establezca Permitir que los servicios y recursos de Azure accedan a este servidor en DESACTIVADO en el nivel de servidor.
  • Utilice puntos de conexión de servicio de red virtual y reglas de firewall de red virtual.
  • Usar vínculo privado.

Conexión desde una aplicación de C o C++ de Windows

Puede conectarse fácilmente a la instancia de Azure SQL Database mediante ODBC en Windows con este ejemplo que se compila con Visual Studio. El ejemplo implementa un intérprete de línea de comandos de ODBC que puede usarse para conectarse a Azure SQL Database. Este ejemplo toma un archivo de nombre de origen de datos (DSN) como argumento de línea de comandos o la cadena de conexión detallada que se copió anteriormente desde Azure Portal. Abra la página de propiedades para este proyecto y pegue la cadena de conexión como argumento de comando, tal como se muestra aquí:

DSN Propsfile.

Asegúrese de proporcionar los detalles de autenticación adecuados para la base de datos como parte de esa cadena de conexión de base de datos.

Inicie la aplicación para compilarla. Debería ver la siguiente ventana en la que se valida una conexión correcta. Incluso puede ejecutar algunos comandos SQL básicos como CREATE TABLE para validar la conectividad de la base de datos:

Captura de pantalla de las conexiones de C++ en odbcsql.exe.

Como alternativa, podría crear un archivo DSN mediante el asistente que se inicia cuando no se proporciona ningún argumento de comando. Se recomienda que lo intente también con esta opción. Puede usar este archivo DSN para la automatización y protección de la configuración de autenticación:

Captura de pantalla del proceso crear archivo DSN, la página Seleccionar origen de datos.

Felicidades. Ya se ha conectado correctamente a Azure SQL con C++ y ODBC en Windows. Puede seguir leyendo para hacer lo mismo en la plataforma Linux.

Conexión desde una aplicación de C o C++ de Linux

Puede desarrollar aplicaciones de C++ de Linux en Visual Studio. Para obtener más información, revise el blog siguiente: Visual C++ para el desarrollo de Linux.

Para la compilación para Linux, se necesitará un equipo remoto en el que se ejecute la distribución de Linux. Si no tiene una disponible, puede configurarla rápidamente mediante máquinas virtuales linux de Azure y una variedad de métodos de implementación.

Para esta guía se supone que tiene configurada una distribución de Linux de Ubuntu 16.04. Los pasos indicados también se aplican a Ubuntu 15.10, Red Hat 6 y Red Hat 7.

Los pasos siguientes instalan las bibliotecas necesarias para SQL y ODBC para la distribución:

    sudo su
    sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/mssql-ubuntu-test/ xenial main" > /etc/apt/sources.list.d/mssqlpreview.list'
    sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893
    apt-get update
    apt-get install msodbcsql
    apt-get install unixodbc-dev-utf16 #this step is optional but recommended*

Inicie Visual Studio. En Herramientas -> ->Administrador de conexiones multiplataforma>, agregue una conexión al cuadro Linux:

Captura de pantalla de Las opciones de herramientas para crear y quitar conexiones SSH.

Una vez establecida la conexión a través de SSH, cree una plantilla Empty project (Linux):

Captura de pantalla de las plantillas para los nuevos proyectos.

A continuación, puede agregar un nuevo archivo de código fuente C y reemplazarlo por este contenido. Con la API ODBC SQLAllocHandle, SQLSetConnectAttr y SQLDriverConnect, puede inicializar y establecer una conexión con su base de datos.

Al igual que con el ejemplo de ODBC de Windows, debe reemplazar la llamada a SQLDriverConnect por los detalles de los parámetros de cadena de conexión de la base de datos copiados anteriormente de Azure Portal.

     retcode = SQLDriverConnect(
        hdbc, NULL, "Driver=ODBC Driver 13 for SQL"
                    "Server;Server=<yourserver>;Uid=<yourusername>;Pwd="
                    "<password>;database=<yourdatabase>",
        SQL_NTS, outstr, sizeof(outstr), &outstrlen, SQL_DRIVER_NOPROMPT);

Lo último que queda por hacer antes de la compilación es agregar odbc como dependencia de biblioteca:

Captura de pantalla de cómo agregar ODBC como una biblioteca de entrada.

Para iniciar la aplicación, abra Linux Console desde el menú Depurar:

Captura de pantalla de la opción de menú Consola de Linux.

Si la conexión se realizó correctamente, ahora debería ver el nombre de la base de datos actual en Linux Console:

Captura de pantalla de la salida de la ventana de la consola de Linux.

Felicidades. Ha completado correctamente la guía y ya puede conectarse a Azure SQL Database desde C++ en plataformas Windows y Linux.

Obtención de la solución completa del tutorial de C o C++

Puede encontrar la GetStarted solución que contiene todos los ejemplos de este artículo en GitHub: