Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La ejecución directa es la manera más básica de ejecutar una instrucción. Una aplicación compila una cadena de caracteres que contiene una instrucción Transact-SQL y la envía para su ejecución mediante la función SQLExecDirect . Cuando la instrucción llega al servidor, SQL Server la compila en un plan de ejecución y, a continuación, ejecuta inmediatamente el plan de ejecución.
La ejecución directa se usa normalmente en las aplicaciones que compilan y ejecutan instrucciones en tiempo de ejecución y son el método más eficaz para las instrucciones que se ejecutarán una sola vez. Su inconveniente con muchas bases de datos es que la instrucción SQL debe analizarse y compilarse cada vez que se ejecuta, lo que agrega sobrecarga si la instrucción se ejecuta varias veces.
SQL Server mejora significativamente el rendimiento de la ejecución directa de instrucciones ejecutadas habitualmente en entornos multiusuario y el uso de SQLExecDirect con marcadores de parámetro para instrucciones SQL ejecutadas habitualmente puede abordar la eficacia de la ejecución preparada.
Cuando se conecta a una instancia de SQL Server, el controlador ODBC de SQL Server Native Client usa sp_executesql para transmitir la instrucción SQL o el lote especificado en SQLExecDirect. SQL Server tiene lógica para determinar rápidamente si una instrucción SQL o un lote ejecutados con sp_executesql coincide con la instrucción o lote que generó un plan de ejecución que ya existe en la memoria. Si se realiza una coincidencia, SQL Server simplemente reutiliza el plan existente en lugar de compilar un nuevo plan. Esto significa que las instrucciones SQL ejecutadas normalmente con SQLExecDirect en un sistema con muchos usuarios se beneficiarán de muchas de las ventajas de reutilización del plan que solo estaban disponibles para los procedimientos almacenados en versiones anteriores de SQL Server.
Esta ventaja de reutilizar los planes de ejecución solo funciona cuando varios usuarios ejecutan la misma instrucción SQL o lote. Siga estas convenciones de codificación para aumentar la probabilidad de que las instrucciones SQL ejecutadas por distintos clientes sean lo suficientemente similares para poder reutilizar los planes de ejecución:
No incluya constantes de datos en las instrucciones SQL; en su lugar, use marcadores de parámetro enlazados a variables de programa. Para obtener más información, vea Using Statement Parameters( Usar parámetros de instrucción).
Use nombres de objeto completos. Los planes de ejecución no se reutilizan si no se califican los nombres de objeto.
Hacer que las conexiones de la aplicación usen un conjunto común de opciones de conexión y instrucción. Los planes de ejecución generados para una conexión con un conjunto de opciones (como ANSI_NULLS) no se reutilizan para una conexión que tenga otro conjunto de opciones. El controlador ODBC de SQL Server Native Client y el proveedor OLE DB de SQL Server Native Client tienen la misma configuración predeterminada para estas opciones.
Si todas las instrucciones ejecutadas con SQLExecDirect se codifican mediante estas convenciones, SQL Server puede reutilizar los planes de ejecución cuando surja la oportunidad.