Conectar con un origen de datos (ODBC)
Se aplica a: SQL Server Azure SQL Database Azure SQL Instancia administrada Azure Synapse Analytics Analytics Platform System (PDW)
Después de asignar el entorno y los identificadores de conexión y establecer los atributos de conexión, la aplicación se conecta al origen de datos o controlador. Hay tres funciones que puede utilizar para conectarse:
SQLConnect
SQLDriverConnect
SQLBrowseConnect
Para obtener más información sobre cómo realizar conexiones a un origen de datos, incluidas las distintas opciones de cadena de conexión disponibles, vea Uso de palabras clave de cadena de conexión con SQL Server Native Client.
SQLConnect
SQLConnect es la función de conexión más sencilla. Acepta tres parámetros: nombre del origen de datos, identificador de usuario y contraseña. Use SQLConnect cuando estos tres parámetros contengan toda la información necesaria para conectarse a la base de datos. Para ello, cree una lista de orígenes de datos mediante SQLDataSources; solicite al usuario un origen de datos, un identificador de usuario y una contraseña y, a continuación, llame a SQLConnect.
SQLConnect supone que un nombre de origen de datos, un identificador de usuario y una contraseña son suficientes para conectarse a un origen de datos y que el origen de datos ODBC contiene toda la información que el controlador ODBC necesita para establecer la conexión. A diferencia de SQLDriverConnect y SQLBrowseConnect, SQLConnect no usa un cadena de conexión.
SQLDriverConnect
SQLDriverConnect se usa cuando se requiere más información que el nombre del origen de datos, el identificador de usuario y la contraseña. Uno de los parámetros de SQLDriverConnect es un cadena de conexión que contiene información específica del controlador. Puede usar SQLDriverConnect en lugar de SQLConnect por los siguientes motivos:
Para especificar la información específica del controlador durante la conexión.
Para solicitar que el controlador solicite al usuario la información de conexión.
Para conectarse sin utilizar un origen de datos ODBC.
El cadena de conexión SQLDriverConnect contiene una serie de pares de palabra clave-valor que especifican toda la información de conexión compatible con un controlador ODBC. Cada controlador admite las palabras clave de ODBC estándar (DSN, FILEDSN, DRIVER, UID, PWD y SAVEFILE) además de las palabras clave específicas del controlador para toda la información de conexión admitida por el controlador. SQLDriverConnect se puede usar para conectarse sin un origen de datos. Por ejemplo, una aplicación diseñada para establecer una conexión "sin DSN" a una instancia de SQL Server puede llamar a SQLDriverConnect con un cadena de conexión que define el identificador de inicio de sesión, la contraseña, la biblioteca de red, el nombre del servidor al que conectarse y la base de datos predeterminada que se va a usar.
Al usar SQLDriverConnect, hay dos opciones para solicitar al usuario información de conexión necesaria:
Cuadro de diálogo de la aplicación
Puede crear un cuadro de diálogo de aplicación que solicite información de conexión y, a continuación, llame a SQLDriverConnect con un identificador de ventana NULL y DriverCompletion establecido en SQL_DRIVER_NOPROMPT. Estos valores de parámetro evitan que el controlador ODBC abra su propio cuadro de diálogo. Se utiliza este método cuando es importante controlar la interfaz de usuario de la aplicación.
Cuadro de diálogo del controlador
Puede codificar la aplicación para pasar un identificador de ventana válido a SQLDriverConnect y establecer el parámetro DriverCompletion en SQL_DRIVER_COMPLETE, SQL_DRIVER_PROMPT o SQL_DRIVER_COMPLETE_REQUIRED. El controlador genera después un cuadro de diálogo para solicitar al usuario la información de conexión. Este método simplifica el código de aplicación.
SQLBrowseConnect
SQLBrowseConnect, al igual que SQLDriverConnect, usa una cadena de conexión. Sin embargo, mediante SQLBrowseConnect, una aplicación puede construir una cadena de conexión completa de forma iterativa con el origen de datos en tiempo de ejecución. Esto permite a la aplicación hacer dos cosas:
Construir sus propios cuadros de diálogo para solicitar esta información, reteniendo así el control sobre la interfaz de usuario.
Buscar en el sistema los orígenes de datos que un controlador determinado puede utilizar, posiblemente en varios pasos.
Por ejemplo, el usuario podría buscar primero en la red los servidores y, después de elegir un servidor, buscar en el servidor las bases de datos accesibles para el controlador.
Cuando SQLBrowseConnect completa una conexión correcta, devuelve un cadena de conexión que se puede usar en llamadas posteriores a SQLDriverConnect.
El controlador ODBC de SQL Server Native Client siempre devuelve SQL_SUCCESS_WITH_INFO en sqlConnect, SQLDriverConnect o SQLBrowseConnect. Cuando una aplicación ODBC llama a SQLGetDiagRec después de obtener SQL_SUCCESS_WITH_INFO, puede recibir los siguientes mensajes:
5701
Indica que SQL Server coloca el contexto del usuario en la base de datos predeterminada definida en el origen de datos o en la base de datos predeterminada definida para el identificador de inicio de sesión usado en la conexión si el origen de datos no tenía una base de datos predeterminada.
5703
Indica el lenguaje utilizado en el servidor.
En el ejemplo siguiente se muestra el mensaje devuelto por el administrador del sistema al realizarse una conexión correctamente:
szSqlState = "01000", *pfNativeError = 5701,
szErrorMsg="[Microsoft][SQL Server Native Client][SQL Server]
Changed database context to 'pubs'."
szSqlState = "01000", *pfNativeError = 5703,
szErrorMsg="[Microsoft][SQL Server Native Client][SQL Server]
Changed language setting to 'us_english'."
Puede omitir los mensajes 5701 y 5703; solo son informativos. No debe, sin embargo, omitir un código de retorno SQL_SUCCESS_WITH_INFO porque se pueden devolver mensajes distintos de 5701 ó 5703. Por ejemplo, si un controlador se conecta a un servidor que ejecuta una instancia de SQL Server con procedimientos almacenados de catálogo obsoletos, uno de los errores devueltos a través de SQLGetDiagRec después de una SQL_SUCCESS_WITH_INFO es:
SqlState: 01000
pfNative: 0
szErrorMsg: "[Microsoft][SQL Server Native Client]The ODBC
catalog stored procedures installed on server
my65server are version 06.50.0193; version 07.00.0205
or later is required to ensure proper operation.
Please contact your system administrator."
La función de control de errores de una aplicación para las conexiones de SQL Server debe llamar a SQLGetDiagRec hasta que devuelva SQL_NO_DATA. A continuación, debe actuar en cualquier mensaje distinto de los que tenga un código pfNative de 5701 o 5703.