Tarea Ejecutar SQL
La tarea Ejecutar SQL ejecuta instrucciones SQL o procedimientos almacenados de un paquete. La tarea puede contener una sola instrucción SQL o múltiples instrucciones SQL que se ejecutarán de forma secuencial. Puede usar la tarea Ejecutar SQL para los siguientes fines:
Truncar una tabla o vista en preparación para insertar datos.
Crear, modificar y quitar objetos de base de datos, como tablas y vistas.
Volver a crear tablas de hechos y tablas de dimensiones antes de cargar datos en ellas.
Ejecutar procedimientos almacenados.
Guardar en una variable el conjunto de filas devuelto por una consulta.
Puede configurar la tarea Ejecutar SQL de las maneras siguientes:
Especificar el tipo de administrador de conexión que se va a utilizar para conectar con una base de datos.
Especificar el tipo de conjunto de resultados que devolverá la instrucción SQL.
Especificar un tiempo de espera para las instrucciones SQL.
Especificar el origen de la instrucción SQL.
Indicar si la tarea omite la fase de preparación para la instrucción SQL.
Si utiliza el tipo de conexión ADO, debe indicar si la instrucción SQL es un procedimiento almacenado. Para otros tipos de conexión, esta propiedad es de sólo lectura y su valor siempre es false.
La tarea Ejecutar SQL puede usarse en combinación con los contenedores de bucles Foreach y For para ejecutar varias instrucciones SQL. Estos contenedores implementan flujos de control que se repiten en un paquete y pueden ejecutar repetidamente la tarea Ejecutar SQL. Por ejemplo, un paquete puede usar el contenedor de bucles Foreach para enumerar los archivos de una carpeta y ejecutar una tarea Ejecutar SQL repetidamente con el fin de ejecutar la instrucción SQL almacenada en cada archivo.
Conectar con un origen de datos
La tarea Ejecutar SQL puede usar distintos tipos de administradores de conexión para conectar con el origen de datos en el que se ejecuta la instrucción SQL o el procedimiento almacenado. La tarea puede usar los tipos de conexión mostrados en la tabla siguiente.
Tipo de conexión |
Administrador de conexión |
---|---|
EXCEL |
|
OLE DB |
|
ODBC |
|
ADO |
|
ADO.NET |
|
SQLMOBILE |
Crear instrucciones SQL
El origen de las instrucciones SQL usadas por esta tarea puede ser una propiedad de tarea que contiene una instrucción, una conexión con un archivo que contiene una o varias instrucciones, o el nombre de una variable que contiene una instrucción. Debe escribirlas en el dialecto del sistema de administración de bases de datos (DBMS) de origen. Para obtener más información, vea Utilizar consultas en paquetes.
Si las instrucciones SQL se almacenan en un archivo, la tarea utiliza un administrador de conexión de archivos para conectar con el archivo. Para obtener más información, vea Administrador de conexión de archivos.
En el Diseñador SSIS, puede utilizar el cuadro de diálogo Editor de la tarea Ejecutar SQL para escribir instrucciones SQL, o utilizar el Generador de consultas, una interfaz gráfica de usuario para crear consultas SQL. Para obtener más información, vea Editor de la tarea Ejecutar SQL (página General) y Generador de consultas.
[!NOTA]
Es posible que la tarea Ejecutar SQL no pueda analizar correctamente instrucciones SQL válidas escritas fuera de dicha tarea.
Enviar varias instrucciones en un lote
Si incluye varias instrucciones en una tarea Ejecutar SQL, puede agruparlas y ejecutarlas como un lote. Para indicar el final de un lote, utilice el comando GO. Todas las instrucciones SQL entre dos comandos GO se envían en un lote al proveedor OLE DB para que se ejecuten. El comando SQL puede incluir varios lotes separados por comandos GO.
Hay restricciones respecto a los tipos de instrucciones SQL que se pueden agrupar en un lote. Para obtener más información, vea Lotes de instrucciones.
Si la tarea Ejecutar SQL ejecuta un lote de instrucciones SQL, se aplicarán las reglas siguientes al lote:
Sólo una instrucción puede devolver un conjunto de resultados y debe ser la primera instrucción del lote.
Si el conjunto de resultados usa enlaces de resultados, las consultas deben devolver el mismo número de columnas. Si las consultas devuelven un número distinto de columnas, la tarea no se completará correctamente. Sin embargo, aunque la tarea no se complete correctamente, se completarán correctamente las consultas que ejecute, como DELETE o INSERT.
Si los enlaces de resultados usan nombres de columna, la consulta debe devolver columnas que tengan los mismos nombres que los nombres de los conjuntos de resultados que se utilizan en la tarea. Si faltan columnas, la tarea no se completa correctamente.
Si la tarea utiliza enlace de parámetros, todas las consultas del lote deberán tener el mismo número de parámetros y estos deberán ser del mismo tipo.
Ejecutar comandos SQL con parámetros
Las instrucciones SQL y los procedimientos almacenados suelen usar parámetros de entrada, parámetros de salida y códigos de retorno. La tarea Ejecutar SQL admite los tipos de parámetros Input, Output y ReturnValue. Utilice el tipo Input para parámetros de entrada, Output para parámetros de salida y ReturnValue para códigos de retorno.
[!NOTA]
Sólo puede usar parámetros en una tarea Ejecutar SQL si el proveedor de datos los admite.
Para obtener información sobre cómo utilizar parámetros y códigos de retorno en la tarea Ejecutar SQL, vea Trabajar con parámetros y códigos de retorno en la tarea Ejecutar SQL.
Especificar un tipo de conjunto de resultados
En función del tipo de comando SQL, la tarea Ejecutar SQL puede devolver o no un conjunto de resultados. Por ejemplo, una instrucción SELECT suele devolver un conjunto de resultados; en cambio, una instrucción INSERT no lo devuelve. El conjunto de resultados de una instrucción SELECT puede contener cero filas, una fila o muchas filas. Los procedimientos almacenados también pueden devolver un valor entero, denominado código de retorno, que indica el estado de ejecución del procedimiento. En tal caso, el conjunto de resultados constará de una fila individual.
Para obtener información sobre cómo recuperar conjuntos de resultados de comandos SQL en la tarea Ejecutar SQL, vea Trabajar con conjuntos de resultados en la tarea Ejecutar SQL.
Entradas del registro personalizadas disponibles en la tarea Ejecutar SQL
La siguiente tabla contiene la entrada del registro personalizada para la tarea Ejecutar SQL. Para obtener más información, vea Implementar el registro en paquetes y Mensajes personalizados para registro.
Entrada del registro |
Descripción |
---|---|
ExecuteSQLExecutingQuery |
Proporciona información sobre las fases de ejecución de la instrucción SQL. Las entradas de registro se escriben cuando la tarea adquiere una conexión con la base de datos, cuando la tarea comienza a preparar la instrucción SQL y una vez que se completa la ejecución de la instrucción SQL. La entrada del registro para la fase de preparación incluye la instrucción SQL que utiliza la tarea. |
Solucionar problemas de la tarea Ejecutar SQL
Puede registrar las llamadas que realiza la tarea Ejecutar SQL a proveedores de datos externos. Puede usar esta capacidad de registro para solucionar problemas relacionados con los comandos SQL que ejecuta la tarea Ejecutar SQL. Para registrar las llamadas realizadas por la tarea Ejecutar SQL a proveedores de datos externos, habilite el registro de paquetes y seleccione el evento Diagnostic en el nivel de paquete. Para obtener más información, vea Solucionar problemas de ejecución de paquetes.
A veces, un procedimiento almacenado o comando SQL devuelve varios conjuntos de resultados. Estos conjuntos de resultados no sólo incluyen los conjuntos de filas resultantes de consultas SELECT, sino valores únicos generados por errores de las instrucciones RAISERROR o PRINT. El hecho de que la tarea omita errores en los conjuntos de resultados que se producen después del primer conjunto de resultados depende del tipo de administrador de conexiones que se use:
Si utiliza los administradores de conexiones ADO y OLE DB, la tarea omite los conjuntos de resultados que se producen después del primer conjunto de resultados. Por consiguiente, con estos administradores de conexiones la tarea omite un error devuelto por un procedimiento almacenado o comando SQL cuando el error no forma parte del primer conjunto de resultados.
Si utiliza los administradores de conexiones ODBC y ADO.NET, la tarea no omite los conjuntos de resultados que se producen después del primer conjunto de resultados. Con estos administradores de conexiones, la tarea producirá un error cuando un conjunto de resultados distinto del primer conjunto de resultados contenga un error.
Configurar la tarea Ejecutar SQL
Puede establecer propiedades mediante programación o a través del Diseñador SSIS.
Para obtener más información acerca de las propiedades que puede establecer en el Diseñador SSIS, haga clic en uno de los temas siguientes:
Editor de la tarea Ejecutar SQL (página Asignación de parámetros)
Editor de la tarea Ejecutar SQL (página Conjunto de resultados)
Para obtener más información sobre cómo establecer estas propiedades en el Diseñador SSIS, haga clic en el siguiente tema:
Configurar la tarea Ejecutar SQL mediante programación
Para obtener más información sobre cómo establecer estas propiedades mediante programación, haga clic en el tema siguiente:
|