Configuración de Azure SQL Database en la actividad de copia
En este artículo se describe cómo usar la actividad de copia en la canalización de datos para copiar datos desde y hacia Azure SQL Database.
Configuración admitida
Para la configuración de cada pestaña en la actividad de copia, vaya a las secciones siguientes respectivamente.
General
Consulte las instruccionesgenerales para configurar la pestaña de parámetros General.
Origen
Las siguientes propiedades son compatibles con Azure SQL Database en la pestaña Origen de una actividad de copia.
Se requieren las siguientes propiedades:
- Tipo de banco de datos : seleccione Externo.
- Conexión: seleccione una conexión de Azure SQL Database en la lista de conexiones. Si la conexión no existe, cree una nueva conexión de Azure SQL Database seleccionando Nuevo.
- Tipo de conexión: seleccione Azure SQL Database.
- Tabla: seleccione la tabla de la base de datos en la lista desplegable. O bien, active Editar para escribir el nombre de la tabla manualmente.
- Vista previa de los datos: seleccione Vista previa de los datos para obtener una vista previa de los datos de la tabla.
En Avanzado, puede especificar los campos siguientes:
Usar consulta: puede elegir Tabla, Consulta o Procedimiento almacenado. La siguiente lista describe la configuración de cada opción:
Tabla: lea los datos de la tabla especificada en la Tabla si selecciona este botón.
Consulta: especifique la consulta SQL personalizada para leer los datos. Un ejemplo es
select * from MyTable
. O seleccione el icono del lápiz para editar en el editor de código.Procedimiento almacenado: use el procedimiento almacenado que lee los datos de la tabla de origen. La última instrucción SQL debe ser una instrucción SELECT del procedimiento almacenado.
Nombre del procedimiento almacenado: seleccione el procedimiento almacenado o especifique manualmente el nombre del procedimiento almacenado al activar la casilla Editar para leer datos de la tabla de origen.
Parámetros de procedimiento almacenado: especifique valores para los parámetros de procedimiento almacenado. Los valores permitidos son pares de nombre o valor. Los nombres y las mayúsculas y minúsculas de los parámetros tienen que coincidir con las mismas características de los parámetros de procedimiento almacenado.
Tiempo de espera de consulta (minutos): especifique el tiempo de espera para la ejecución del comando de consulta; el valor predeterminado es de 120 minutos. Si se establece un parámetro para esta propiedad, los valores permitidos son intervalos de tiempo, como "02:00:00" (120 minutos).
Nivel de aislamiento: especifica el comportamiento de bloqueo de transacciones para el origen de SQL. Los valores permitidos son: None, ReadCommitted, ReadUncommitted, RepeatableRead, Serializable o Snapshot. Si no se especifica, se usa el nivel de aislamiento None. Consulte IsolationLevel Enum para obtener más detalles.
Opción de partición: especifique las opciones de partición de datos usadas para cargar datos de Azure SQL Database. Los valores permitidos son: Ninguno (predeterminado), Particiones físicas de la tabla, y Rango dinámico. Cuando se habilita una opción de partición (es decir, que no es Ninguno), el grado de simultaneidad para cargar datos de una base de datos Azure SQL Database se controla mediante la configuración Copia en paralelo de la actividad de copia.
Ninguno: elija esta opción de configuración para no usar una partición.
Particiones físicas de la tabla: cuando se usa una partición física, la columna y el mecanismo de partición se determinan automáticamente en base a la definición de la tabla física.
Rango dinámico: cuando se usa la consulta con la opción paralela habilitada, se necesita el parámetro de partición por rango(
?DfDynamicRangePartitionCondition
). Consulta de ejemplo:SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition
.- Nombre de la columna de origen: especifique el nombre de la columna de origen de tipo entero o fecha/hora (
int
,smallint
,bigint
,date
,smalldatetime
,datetime
,datetime2
odatetimeoffset
) que usa la partición de rangos para la copia paralela. Si no se especifica, el índice o la clave primaria de la tabla se detectan automáticamente y se usan como columna de partición. - Límite superior de la partición: especifique el valor máximo de la columna de partición para la división del rango de partición. Este valor se usa para decidir el intervalo de particiones, no para filtrar las filas de la tabla. Se crean particiones de todas las filas de la tabla o el resultado de la consulta y se copian.
- Límite inferior de la partición: especifique el valor mínimo de la columna de partición para la división del rango de partición. Este valor se usa para decidir el intervalo de particiones, no para filtrar las filas de la tabla. Se crean particiones de todas las filas de la tabla o el resultado de la consulta y se copian.
- Nombre de la columna de origen: especifique el nombre de la columna de origen de tipo entero o fecha/hora (
Columnas adicionales: agregue más columnas de datos a la ruta de acceso relativa o al valor estático de los archivos de origen. La expresión se admite para este último. Para más información, vaya a Agregar columnas adicionales durante la copia.
Destination
Las siguientes propiedades son compatibles con Azure SQL Database en la pestaña Destino de una actividad de copia.
Se requieren las siguientes propiedades:
- Tipo de banco de datos : seleccione Externo.
- Conexión: seleccione una conexión de Azure SQL Database en la lista de conexiones. Si la conexión no existe, cree una nueva conexión de Azure SQL Database seleccionando Nuevo.
- Tipo de conexión: seleccione Azure SQL Database.
- Tabla: seleccione la tabla de la base de datos en la lista desplegable. O bien, active Editar para escribir el nombre de la tabla manualmente.
- Vista previa de los datos: seleccione Vista previa de los datos para obtener una vista previa de los datos de la tabla.
En Avanzado, puede especificar los campos siguientes:
Comportamiento de escritura: define el comportamiento de escritura cuando el origen son archivos de un almacén de datos basado en archivos. Puede elegir Insertar, Upsert o Procedimiento almacenado.
Insertar: elija esta opción si los datos de origen tienen inserciones.
Upsert: elija esta opción si sus datos de origen tienen tanto inserciones como actualizaciones.
Use TempDB: especifique si se debe usar una tabla temporal global o una tabla física como tabla intermedia para upsert. De forma predeterminada, el servicio usa la tabla temporal global como tabla provisional y esta casilla está activada.
Seleccionar esquema de BD de usuario: si la casilla Use TempDB no está seleccionada, especifique el esquema provisional para crear una tabla provisional si se usa una tabla física.
Nota:
Debe tener el permiso para crear y eliminar tablas. De manera predeterminada, una tabla provisional compartirá el mismo esquema que una tabla de destino.
Columnas clave: especifique los nombres de las columnas para la identificación única de las filas. Se puede usar una sola clave o una serie de claves. Si no se especifica, se usa la clave principal.
Procedimiento almacenado: use el procedimiento almacenado que define cómo aplicar los datos de origen en una tabla de destino. Este procedimiento almacenado se invoca por lote.
Nombre del procedimiento almacenado: seleccione el procedimiento almacenado o especifique manualmente el nombre del procedimiento almacenado al activar la casilla Editar para leer datos de la tabla de origen.
Parámetros de procedimiento almacenado: especifique valores para los parámetros de procedimiento almacenado. Los valores permitidos son pares de nombre o valor. Los nombres y las mayúsculas y minúsculas de los parámetros tienen que coincidir con las mismas características de los parámetros de procedimiento almacenado.
Bloquear tabla de inserción masiva: elija Sí o No. Use esta configuración para mejorar el rendimiento de la copia durante una operación de inserción masiva en una tabla sin índice de varios clientes. Para más información, vea BULK INSERT (Transact-SQL).
Opción de tabla: especifica si se debe crear automáticamente la tabla de destino si la tabla no existe según el esquema de origen. Elija Ninguno o Crear tabla automáticamente. No se admite la creación automática de tablas cuando el destino especifica un procedimiento almacenado.
Script de copia previa: especifique un script para que la actividad de copia se ejecute antes de escribir datos en una tabla de destino en cada ejecución. Puede usar esta propiedad para limpiar los datos cargados previamente.
Tiempo de espera de escritura por lotes: especifique el tiempo que se concede a la operación de inserción por lotes para que finalice antes de que se agote el tiempo de espera. El valor permitido es timespan. El valor predeterminado es "00:30:00" (30 minutos).
Tamaño del lote de escritura: especifique el número de filas a insertar en la tabla SQL por lote. El valor que se permite es un entero (número de filas). De manera predeterminada, el servicio determina dinámicamente el tamaño adecuado del lote en función del tamaño de fila.
Máximo de conexiones simultáneas: especifique el límite superior de conexiones simultáneas establecidas con el almacén de datos durante la ejecución de la actividad. Especifique un valor solo cuando quiera limitar las conexiones simultáneas.
Deshabilitar el análisis de métricas de rendimiento: esta configuración se usa para recopilar métricas, como DTU, DWU, RU, etc., para la optimización del rendimiento de la copia y las recomendaciones. Si le preocupa este comportamiento, active esta casilla.
Asignación
Para la configuración de la pestaña Asignación, si no aplica la base de datos de Azure SQL con tabla de creación automática como destino, vaya a Asignación.
Si aplica la base de datos de Azure SQL con auto crear tabla como su destino, excepto la configuración en Asignación, puede editar el tipo para sus columnas de destino. Después de seleccionar Importar esquemas, puede especificar el tipo de columna en el destino.
Por ejemplo, el tipo de la columna ID de origen es int y puede cambiarlo a tipo float al asignarlo a la columna de destino.
Configuración
Para la configuración de la pestañaConfiguración, vaya a Configurar los otros parámetros en la ficha Configuración .
Copia paralela de Azure SQL Database
En la actividad de copia, el conector de Azure SQL Database proporciona creación de particiones de datos integrada para copiar los datos en paralelo. Puede encontrar las opciones de creación de particiones de datos en la pestaña Origen de la actividad de copia.
Al habilitar la copia con particiones, la actividad de copia ejecuta consultas en paralelo en el origen de Azure SQL Database para cargar los datos por particiones. El grado paralelo se controla mediante el Grado de paralelismo de copia en la pestaña de configuración de la actividad de copia. Por ejemplo, si establece Grado de paralelismo de copia en cuatro, el servicio genera y ejecuta simultáneamente cuatro consultas basadas en la configuración y la opción de partición especificadas, y cada consulta recupera una parte de los datos de su Azure SQL Database.
Se sugiere habilitar la copia en paralelo con la creación de particiones de datos, especialmente si se cargan grandes cantidades de datos de Azure SQL Database. Estas son algunas configuraciones sugeridas para diferentes escenarios. Cuando se copian datos en un almacén de datos basado en archivos, se recomienda escribirlos en una carpeta como varios archivos (solo especifique el nombre de la carpeta), en cuyo caso el rendimiento es mejor que escribirlos en un único archivo.
Escenario | Configuración sugerida |
---|---|
Carga completa de una tabla grande con particiones físicas. | Opción de partición: particiones físicas de la tabla. Durante la ejecución, el servicio detecta automáticamente las particiones físicas y copia los datos por particiones. Para comprobar si la tabla tiene una partición física o no, puede hacer referencia a esta consulta. |
Carga completa de una tabla grande, sin particiones físicas, aunque con una columna de tipo entero o datetime para la creación de particiones de datos. | Opciones de partición: partición por rangos dinámica. Columna de partición (opcional): especifique la columna usada para crear la partición de datos. Si no se especifica, se usa la columna de índice o clave principal. Límite de partición superior y límite de partición inferior (opcional): especifique si quiere determinar el intervalo de la partición. No es para filtrar las filas de la tabla, se crean particiones de todas las filas de la tabla y se copian. Si no se especifica, las actividades de copia detectan automáticamente los valores. Por ejemplo, si la columna de partición "ID" tiene valores que van de 1 a 100 y establece el límite inferior en 20 y el superior en 80, con la copia en paralelo establecida en 4, el servicio recupera los datos en 4 particiones: identificadores del rango <=20, del rango [21, 50], del rango [51, 80] y del rango >=81, respectivamente. |
Carga de grandes cantidades de datos mediante una consulta personalizada, sin particiones físicas, aunque con una columna de tipo entero o date/datetime para la creación de particiones de datos. | Opciones de partición: partición por rangos dinámica. Consulta: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause> .Columna de partición: especifique la columna usada para crear la partición de datos. Límite de partición superior y límite de partición inferior (opcional): especifique si quiere determinar el intervalo de la partición. No es para filtrar las filas de la tabla, se crean particiones de todas las filas del resultado de la consulta y se copian. Si no se especifica, la actividad de copia detecta automáticamente el valor. Por ejemplo, si la columna de partición "ID" tiene valores que van de 1 a 100 y establece el límite inferior en 20 y el superior en 80, con la copia en paralelo establecida en 4, el servicio recupera los datos en 4 particiones: identificadores del rango <=20, del rango [21, 50], del rango [51, 80] y del rango >=81, respectivamente. A continuación se muestran más consultas de ejemplo para distintos escenarios: • Consulta de la tabla completa: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition • Consulta de una tabla con selección de columnas y filtros adicionales de la cláusula where: SELECT <column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause> • Consulta con subconsultas: SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause> • Consulta con partición en subconsulta: SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition) AS T |
Procedimientos recomendados para cargar datos con la opción de partición:
- Seleccione una columna distintiva como columna de partición (como clave principal o clave única) para evitar la asimetría de datos.
- Si la tabla tiene una partición integrada, use la opción de partición Particiones físicas de tabla para obtener un mejor rendimiento.
Consulta de ejemplo para comprobar la partición física
SELECT DISTINCT s.name AS SchemaName, t.name AS TableName, pf.name AS PartitionFunctionName, c.name AS ColumnName, iif(pf.name is null, 'no', 'yes') AS HasPartition
FROM sys.tables AS t
LEFT JOIN sys.objects AS o ON t.object_id = o.object_id
LEFT JOIN sys.schemas AS s ON o.schema_id = s.schema_id
LEFT JOIN sys.indexes AS i ON t.object_id = i.object_id
LEFT JOIN sys.index_columns AS ic ON ic.partition_ordinal > 0 AND ic.index_id = i.index_id AND ic.object_id = t.object_id
LEFT JOIN sys.columns AS c ON c.object_id = ic.object_id AND c.column_id = ic.column_id
LEFT JOIN sys.partition_schemes ps ON i.data_space_id = ps.data_space_id
LEFT JOIN sys.partition_functions pf ON pf.function_id = ps.function_id
WHERE s.name='[your schema]' AND t.name = '[your table name]'
Si la tabla tiene una partición física, verá "HasPartition" como "yes" como en el caso siguiente.
Resumen de tabla
Las tablas siguientes contienen más información sobre la actividad de copia en Azure SQL Database.
Origen
Nombre | Descripción | Value | Obligatorio | Propiedad de script JSON |
---|---|---|---|---|
Tipo de almacén de datos | El tipo de almacén de datos. | Externo | Sí | / |
Connection | La conexión al almacén de datos de origen. | <su conexión> | Sí | conexión |
Tipo de conexión | El tipo de conexión. Seleccione Azure SQL Database. | Azure SQL Database | Sí | / |
Tabla | La tabla de datos de origen. | <nombre de la tabla de destino> | Sí | esquema table |
Usar consulta | La consulta SQL personalizada para leer los datos. | • Ninguno • Consulta • Procedimiento almacenado |
No | • sqlReaderQuery • sqlReaderStoredProcedureName, storedProcedureParameters |
Tiempo de espera de la consulta | El tiempo de espera para la ejecución del comando de consulta, el valor predeterminado es de 120 minutos. | timespan | No | queryTimeout |
Nivel de aislamiento | Especifica el comportamiento de bloqueo de transacción para el origen de SQL. | • None • ReadCommitted • ReadUncommitted • RepeatableRead • Serializable • Snapshot |
No | isolationLevel |
Opción de partición | Las opciones de creación de particiones de datos que se usan para cargar datos desde Azure SQL Database. | • None • Particiones físicas de la tabla • Intervalo dinámico |
No | partitionOption: • PhysicalPartitionsOfTable • DynamicRange |
Columnas adicionales | Agregue más columnas de datos a la ruta de acceso relativa o al valor estático de los archivos de origen. La expresión se admite para este último. | • Name • Valor |
No | additionalColumns: • nombre • value |
Destination
Nombre | Descripción | Value | Obligatorio | Propiedad de script JSON |
---|---|---|---|---|
Tipo de almacén de datos | El tipo de almacén de datos. | Externo | Sí | / |
Connection | La conexión al almacén de datos de destino. | <su conexión> | Sí | conexión |
Tipo de conexión | El tipo de conexión. Seleccione Azure SQL Database. | Azure SQL Database | Sí | / |
Tabla | La tabla de datos de destino. | <nombre de la tabla de destino> | Sí | esquema table |
Comportamiento de escritura | Define el comportamiento de escritura cuando el origen son archivos de un almacén de datos basados en archivos. | • Insertar • Upsert • Procedimiento almacenado |
No | writeBehavior: • insert • upsert • sqlWriterStoredProcedureName, sqlWriterTableType, storedProcedureParameters |
Bloqueo de tabla de inserción masiva | Use esta configuración para mejorar el rendimiento de la copia durante una operación de inserción masiva en una tabla sin índice de varios clientes. | Sí o no | No | sqlWriterUseTableLock: true o false |
Opción de tabla | Especifica si se debe crear automáticamente la tabla de destino si no existe según el esquema de origen. | • Ninguno • Crear tabla automáticamente |
No | tableOption: • autoCreate |
Pre-copy script (Script anterior a la copia) | Un script para que la actividad de copia se ejecute antes de escribir datos en una tabla de destino en cada ejecución. Puede usar esta propiedad para limpiar los datos cargados previamente. | <script anterior a la copia> (string) |
No | preCopyScript |
Tiempo de espera de escritura por lotes | Tiempo que se concede a la operación de inserción por lotes para que finalice antes de que se agote el tiempo de espera. El valor permitido es TimeSpan. El valor predeterminado es "00:30:00" (30 minutos). | timespan | No | writeBatchTimeout |
Tamaño del lote de escritura | Número de filas que se va a insertar en la tabla SQL por lote. De manera predeterminada, el servicio determina dinámicamente el tamaño adecuado del lote en función del tamaño de fila. | <número de filas > (entero) |
No | writeBatchSize |
Número máximo de conexiones simultáneas | Número máximo de conexiones simultáneas establecidas en el almacén de datos durante la ejecución de la actividad. Especifique un valor solo cuando quiera limitar las conexiones simultáneas. | < límite superior de conexiones simultáneas > (entero) |
No | maxConcurrentConnections |
Desactivar análisis de métricas de rendimiento | Esta configuración se usa para recopilar métricas, como DTU, DWU, RU, etc., para la optimización del rendimiento de la copia y las recomendaciones. Si le preocupa este comportamiento, active esta casilla. | seleccionar o anular la selección | No | disableMetricsCollection: true o false |