Configurar Azure SQL Database en una 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 la guía de Configuración general para configurar la pantalla de configuración General.
Fuente
Las siguientes propiedades son compatibles con Azure SQL Database en la pestaña Origen de una actividad de copia.
Las siguientes propiedades son necesarias:
- Tipo de almacén de datos: seleccione externo .
- Conexión: Seleccione una conexión de Azure SQL Database en la lista de conexiones. Si la conexión no se ha establecido, 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, compruebe Editar para escribir manualmente el nombre de la tabla.
- Vista previa de los datos: seleccione Vista previa de los datos para obtener una vista previa de los datos de la tabla.
En Advanced, puede especificar los siguientes campos:
Usar de consulta: puede elegir Tabla, Consultao Procedimiento almacenado. En la lista siguiente se describe la configuración de cada configuración:
Tabla: lea los datos de la tabla que especificó en Tabla si selecciona este botón.
Consulta: especifique la consulta SQL personalizada para leer datos. Un ejemplo es
select * from MyTable
. O bien, seleccione el icono de lápiz que se va a editar en el editor de código.Procedimiento almacenado: Use el procedimiento almacenado que lee datos de la tabla de origen. La última instrucción SQL debe ser una instrucción SELECT en el procedimiento almacenado.
nombre del procedimiento almacenado: seleccione el procedimiento almacenado o especifique manualmente el nombre del procedimiento almacenado al comprobar el cuadro Editar para leer datos de la tabla de origen.
parámetros de procedimiento almacenado: especifique valores para los parámetros del procedimiento almacenado. Los valores permitidos son pares de nombre o valor. Los nombres y mayúsculas y minúsculas de los parámetros deben coincidir con los nombres y el uso de mayúsculas y minúsculas de los parámetros del 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, Serializableo Instantánea. Si no se especifica, se usa Nivel de aislamiento Ninguno. Consulte IsolationLevel Enum para obtener más detalles.
Opción Partición: especifique las opciones de creación de particiones de datos que se usan para cargar datos de Azure SQL Database. Los valores permitidos son: Ninguno (predeterminado), Particiones físicas de la tabla, y Intervalo dinámico. Cuando se habilita una opción de partición (es decir, no Ninguno), el grado de paralelismo para cargar datos simultáneamente desde una instancia de Azure SQL Database se controla mediante la configuración de copia en paralelo en la actividad de copia.
Ninguno: elija esta opción para no usar una partición.
Particiones físicas de la tabla: cuando se usa una partición física, la columna de partición y el mecanismo se determinan automáticamente en función de la definición de la tabla física.
Intervalo dinámico: cuando se usa una consulta con paralelismo habilitado, se necesita el parámetro de partición de intervalo(
?DfDynamicRangePartitionCondition
). Consulta de ejemplo:SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition
.- Nombre de columna de partición: especifique el nombre de la columna de origen en entero o tipo fecha/datetime (
int
,smallint
,bigint
,date
,smalldatetime
,datetime
,datetime2
odatetimeoffset
) que usa la creación de particiones de intervalo para la copia en paralelo. Si no se especifica, el índice o la clave principal de la tabla se detectan automáticamente y se usan como columna de partición. - Límite superior de partición: Especifique el valor máximo de la columna de partición para dividir el rango de particiones. Este valor se utiliza para decidir el intervalo de partición y no para filtrar las filas en la tabla. Todas las filas de la tabla o el resultado de la consulta se particionan y copian.
- Partición de límite inferior: especifique el valor mínimo de la columna de partición para la división del intervalo de particiones. Este valor se utiliza para determinar el paso de partición, no para filtrar las filas de la tabla. Todas las filas de la tabla o el resultado de la consulta se particionan y copian.
- Nombre de columna de partición: especifique el nombre de la columna de origen en entero o tipo fecha/datetime (
Columnas adicionales: agregue más columnas de datos para almacenar la ruta de acceso relativa o el 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.
Destino
Las siguientes propiedades son compatibles con Azure SQL Database en la pestaña Destino de una actividad de copia.
Las siguientes propiedades son necesarias :
- Tipo de almacén 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 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, compruebe Editar para escribir manualmente el nombre de la tabla.
- Vista previa de los datos: seleccione Vista previa de los datos para obtener una vista previa de los datos de la tabla.
En Advanced, puede especificar los siguientes campos:
Comportamiento de escritura: define el comportamiento de escritura cuando el origen es 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 los datos de origen tienen inserciones y actualizaciones.
Use TempDB: especifique si se va a usar una tabla temporal global o una tabla física como tabla provisional para upsert. De forma predeterminada, el servicio usa la tabla temporal global como tabla provisional y esta casilla está activada.
Seleccionar esquema de base de datos de usuario: cuando la casilla Usar TempDB no está activada, 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 forma predeterminada, una tabla provisional compartirá el mismo esquema que una tabla de destino.
Columnas principales: especifique los nombres de columna para identificar filas de manera única. 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 datos de origen a 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 comprobar el cuadro Editar para leer datos de la tabla de origen.
parámetros de procedimiento almacenado: especifique valores para los parámetros del procedimiento almacenado. Los valores permitidos son pares de nombre y valor. Los nombres y mayúsculas y minúsculas de los parámetros deben coincidir con los nombres y el uso de mayúsculas y minúsculas de los parámetros del procedimiento almacenado.
Bloqueo de 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 ningún índice de varios clientes. Para más información, ir a BULK INSERT (Transact-SQL).
Opción Tabla: especifica si crear automáticamente la tabla de destino si la tabla no existe en función del 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 se ejecute la actividad de copia 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 de lotes: especifique el tiempo de espera para que finalice la operación de inserción por lotes antes de que se agote el tiempo de espera. El valor permitido es timespan. El valor predeterminado es "00:30:00" (30 minutos).
Escribir tamaño de lote: especifique el número de filas que se van a insertar en la tabla SQL por lote. El valor permitido es entero (número de filas). De forma predeterminada, el servicio determina dinámicamente el tamaño de lote adecuado en función del tamaño de fila.
número máximo de conexiones simultáneas: especifique el límite superior de conexiones simultáneas establecidas en el almacén de datos durante la ejecución de la actividad. Especifique un valor solo cuando desee 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 y recomendaciones de rendimiento de copia. Si le preocupa este comportamiento, active esta casilla.
Cartografía
Para la configuración de pestaña Asignación, si no aplica Azure SQL Database con la creación automática de la tabla como destino, vaya a Asignación.
Si aplica Azure SQL Database con la tabla de creación automática como destino, excepto la configuración de Asignación, puede editar el tipo de las columnas de destino. Después de seleccionar Importar esquemas, puede especificar el tipo de columna en el destino.
Por ejemplo, el tipo de Id. columna de origen es int y puede cambiarlo a tipo float al asignar a la columna de destino.
Configuración
Para Configuración configuración de pestaña, vaya a Configurar las demás opciones en la pestaña configuración).
Copia en paralelo desde Azure SQL Database
El conector de Azure SQL Database en la actividad de copia proporciona particiones de datos integradas para copiar datos en paralelo. Puede encontrar 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 paralelas en el origen de Azure SQL Database para cargar datos por particiones. El grado paralelo se controla mediante el grado de paralelismo de copia en la pestaña 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 en función de la configuración y la opción de partición especificadas, y cada consulta recupera una parte de los datos de la instancia de Azure SQL Database.
Se recomienda habilitar la copia en paralelo con la creación de particiones de datos, especialmente cuando se carga una gran cantidad de datos de azure SQL Database. A continuación se sugieren configuraciones para diferentes escenarios. Al copiar datos en el almacén de datos basado en archivos, se recomienda escribir en una carpeta como varios archivos (solo especificar el nombre de carpeta), en cuyo caso el rendimiento es mejor que escribir en un solo archivo.
Escenario | Configuración sugerida |
---|---|
Carga completa de datos desde 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 desde una tabla grande, sin particiones físicas, pero utilizando una columna de tipo entero o fecha y hora para particionar los datos. | Opciones de partición: partición de intervalo dinámico. columna de partición (opcional): especifique la columna que se usa para la partición de datos. Si no se especifica, se usa el índice o la columna de clave principal. Partición del límite superior y Partición del límite inferior (opcional): especifique si desea determinar el paso de partición. Esto no es para filtrar las filas de la tabla, todas las filas de la tabla se particionarán y copiarán. Si no se especifica, las actividades de copia detectan automáticamente los valores. Por ejemplo, si la columna de partición "ID" tiene valores comprendidos entre 1 y 100, y establece el límite inferior como 20 y el límite superior como 80, con la copia en paralelo como 4, el servicio recupera los datos por 4 particiones: identificadores en el intervalo <=20, [21, 50], [51, 80] y >=81, respectivamente. |
Cargue una gran cantidad de datos mediante una consulta personalizada, sin particiones físicas, utilizando una columna de entero o de fecha/fecha y hora para la creación de particiones de datos. | Opciones de partición: partición de intervalo dinámico. Consulta: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause> .columna de partición: especifique la columna usada para crear particiones de datos. Partición de límite superior y partición de límite inferior (opcional): especifique si desea determinar el intervalo de partición. Esto no es para filtrar las filas de la tabla, todas las filas del resultado de la consulta se particionarán y copiarán. Si no se especifica, la actividad de copia detecta automáticamente el valor. Por ejemplo, si la columna de partición "ID" tiene valores comprendidos entre 1 y 100, y establece el límite inferior como 20 y el límite superior como 80, con la copia en paralelo como 4, el servicio recupera los datos por 4 particiones: identificadores en el intervalo <=20, [21, 50], [51, 80] y >=81, respectivamente. Estas son más consultas de ejemplo para diferentes escenarios: • Consultar toda la tabla: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition • Interrogación de datos desde una tabla con selección de columnas y filtros adicionales de 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 la 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:
- Elija 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 la 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 particiones físicas, verá "HasPartition" como "sí" como en el siguiente ejemplo.
Resumen de tabla
Las tablas siguientes contienen más información sobre la actividad de copia en Azure SQL Database.
Fuente
Nombre | Descripción | Valor | Obligatorio | Propiedad de script JSON |
---|---|---|---|---|
Tipo de almacén de datos | El tipo de almacén de datos. | Externo | Sí | / |
Conexión | La conexión al almacén de datos de origen. | <la conexión> | Sí | conexión |
Tipo de conexión | El tipo de conexión. Seleccione Azure SQL Database. | Base de datos SQL de Azure | Sí | / |
Tabla | Tu tabla de datos de origen. | <nombre de la tabla de destino> | Sí | esquema tabla |
Usar de consulta | Consulta SQL personalizada para leer datos. | •Ninguno • Consulta • Procedimiento almacenado |
No | • sqlReaderQuery • sqlReaderStoredProcedureName, storedProcedureParameters |
Tiempo de expiración de consulta | El tiempo de espera para la ejecución del comando de consulta, el valor predeterminado es de 120 minutos. | intervalo de tiempo | No | queryTimeout |
nivel de aislamiento | Especifica el comportamiento de bloqueo de transacciones para el origen de SQL. | •Ninguno • ReadCommitted • ReadUncommitted • RepeatableRead • Serializable •Captura instantánea |
No | nivel de aislamiento |
Opción de partición | Las opciones de creación de particiones de datos que se usan para cargar datos de Azure SQL Database. | •Ninguno • Particiones físicas de la tabla • Intervalo dinámico |
No | partitionOption: • PhysicalPartitionsOfTable • DynamicRange |
Columnas adicionales | Agregue más columnas de datos para almacenar la ruta de acceso relativa o el valor estático de los archivos de origen. La expresión se admite para este último. | •Nombre • Valor |
No | additionalColumns: •nombre •valor |
Destino
Nombre | Descripción | Valor | Obligatorio | Propiedad de script JSON |
---|---|---|---|---|
Tipo de almacén de datos | El tipo de almacén de datos. | Externo | Sí | / |
Conexión | 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. | Base de datos SQL de Azure | Sí | / |
Tabla | La tabla de datos de destino. | <nombre de la tabla de destino> | Sí | esquema tabla |
Comportamiento de escritura | Define el comportamiento de escritura cuando el origen es archivos de un almacén de datos basado en archivos. | • Insert • 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 ningún índice de varios clientes. | Sí o no | No | sqlWriterUseTableLock: verdadero o falso |
Opción de tabla | Especifica si se va a crear automáticamente la tabla de destino si no existe en función del esquema de origen. | •Ninguno • Crear tabla automáticamente |
No | opción de tabla: • autoCreate |
Script de copia previa | 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 de copia previa> (cadena) |
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). | intervalo de tiempo | No | writeBatchTimeout |
Tamaño del lote de escritura | Número de filas que se van a insertar en la tabla SQL por lote. De forma predeterminada, el servicio determina dinámicamente el tamaño de lote adecuado en función del tamaño de fila. | <número de filas > (entero) |
No | writeBatchSize |
número máximo de conexiones simultáneas | Límite superior de conexiones simultáneas establecidas en el almacén de datos durante la ejecución de la actividad. Especifique un valor solo cuando desee limitar las conexiones simultáneas. | <límite superior de conexiones simultáneas> (entero) |
No | máximo de conexiones simultáneas |
Deshabilitación del 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 copia y las recomendaciones. Si le preocupa este comportamiento, active esta casilla. | seleccionar o anular la selección | No | disableMetricsCollection: verdadero o falso |