Asignar un identificador de instrucción

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Antes de que una aplicación pueda ejecutar una instrucción, debe asignar un identificador de instrucción. Para ello, llama a SQLAllocHandle con el parámetro HandleType establecido en SQL_HANDLE_STMT y InputHandle que apunta a un identificador de conexión.

Los atributos de instrucción son características del identificador de instrucción. Los atributos de instrucción de ejemplo pueden incluir la utilización de marcadores y el tipo de cursor que se debe utilizar con el conjunto de resultados de la instrucción. Los atributos de instrucción se establecen con SQLSetStmtAttr y su configuración actual se recupera mediante SQLGetStmtAttr. No es necesario que una aplicación establezca atributos de instrucción; todos los atributos de instrucción tienen valores predeterminados y algunos son específicos de controlador.

Actúe con precaución al usar varias opciones de instrucción y conexión de ODBC. La llamada a SQLSetConnectAttr con fOption establecida en SQL_ATTR_LOGIN_TIMEOUT controla el tiempo que una aplicación espera a que una conexión intente agotar el tiempo de espera mientras espera a establecer una conexión (0 especifica una espera infinita). Los sitios con tiempos de respuesta lentos pueden establecer este valor alto para asegurarse de que las conexiones disponen de tiempo suficiente para completarse. Sin embargo, el intervalo siempre debe ser lo suficientemente bajo como para proporcionar al usuario una respuesta en un tiempo razonable si el controlador no puede conectar.

La llamada a SQLSetStmtAttr con fOption establecida en SQL_ATTR_QUERY_TIMEOUT establece un intervalo de tiempo de espera de consulta para ayudar a proteger el servidor y al usuario de consultas de larga duración.

La llamada a SQLSetStmtAttr con fOption establecida en SQL_ATTR_MAX_LENGTH limita la cantidad de datos de texto e imagen que una instrucción individual puede recuperar. Al llamar a SQLSetStmtAttr con fOption establecido en SQL_ATTR_MAX_ROWS también se limita un conjunto de filas a las primeras n filas si esa es toda la aplicación necesaria. Observe que el valor SQL_ATTR_MAX_ROWS hace que el controlador emita una instrucción SET ROWCOUNT al servidor. Esto afecta a todas las instrucciones de Microsoft SQL Server, incluidos los desencadenadores y las actualizaciones.

Actúe con precaución cuando establezca estas opciones. Es preferible que todos los identificadores de instrucción de un identificador de conexión tengan la misma configuración en SQL_ATTR_MAX_LENGTH y SQL_ATTR_MAX_ROWS. Si el controlador cambia de un identificador de instrucción a otro con valores diferentes en estas opciones, debe generar las instrucciones SET TEXTSIZE y SET ROWCOUNT adecuadas para cambiar los valores. El controlador no puede colocar estas instrucciones en el mismo lote que la instrucción SQL del usuario porque la instrucción SQL del usuario puede contener una instrucción que debe ser la primera de un lote. El controlador debe enviar las instrucciones SET TEXTSIZE y SET ROWCOUNT en un lote independiente, que genera automáticamente un viaje de ida y vuelta (round trip) adicional al servidor.

Consulte también

Ejecutar consultas (ODBC)