Compartilhar via


Configurar o banco de dados SQL em uma atividade de cópia (versão prévia)

Este artigo descreve como usar a atividade de cópia em um pipeline para copiar dados de e para o banco de dados SQL.

Configuração com suporte

Para a configuração de cada guia em atividade Copy, vá para as seções a seguir, respectivamente.

Geral

Consulte as diretrizes de Configurações Geraispara definir a guia Configurações Gerais.

Source

As propriedades a seguir têm suporte para o banco de dados SQL na guia Origem de uma atividade de cópia.

Captura de tela mostrando a guia de origem e a lista de propriedades.

As seguintes propriedades são necessárias:

  • Conexão: selecione um banco de dados SQL existente referente à etapa neste artigo.

  • Use a consulta: você pode escolher Tabela, Consulta ou procedimento armazenado. A lista a seguir descreve a configuração de cada configuração:

    • Tabela: especifique o nome do banco de dados SQL para ler dados. Escolha uma tabela existente na lista suspensa ou selecione Enter manualmente para inserir o esquema e o nome da tabela.

    • Consulta: especifique a consulta SQL personalizada para ler dados. Um exemplo é select * from MyTable. Ou selecione o ícone de lápis a ser editado no editor de código.

      Captura de tela mostrando a escolha da consulta.

    • Procedimento armazenado: selecione o procedimento armazenado na lista suspensa.

Em Avançado, você pode especificar os seguintes campos:

  • Tempo limite da consulta (minutos): especifique o tempo limite para a execução do comando de consulta, o padrão é 120 minutos. Se o parâmetro for definido para essa propriedade, os valores permitidos serão intervalos de tempo, como "02:00:00" (120 minutos).

    Captura de tela mostrando as configurações de tempo limite de consulta.

  • Nível de isolamento: especifica o comportamento de bloqueio de transação para a origem do SQL. Os valores permitidos são: Leitura confirmada, leitura não confirmada, leitura repetível, serializável ou instantâneo. Consulte IsolationLevel Enum para obter mais detalhes.

    Captura de tela mostrando as configurações de nível de isolamento.

  • Opção de partição: especifique as opções de particionamento de dados usadas para carregar dados do banco de dados SQL. Os valores permitidos são: Nenhum (padrão), partições físicas da tabela e intervalo dinâmico. Quando uma opção de partição está habilitada (ou seja, não Nenhuma), o grau de paralelismo para carregar dados simultaneamente de um banco de dados SQL é controlado pelo grau de paralelismo de cópia na guia configurações de atividade de cópia.

    • Nenhum: escolha essa configuração para não usar uma partição.

    • Partições físicas da tabela: ao usar uma partição física, a coluna de partição e o mecanismo são determinados automaticamente com base na definição da tabela física.

    • Intervalo dinâmico: ao usar a consulta com o paralelo habilitado, o parâmetro de partição de intervalo(?DfDynamicRangePartitionCondition) é necessário. Consulta de exemplo: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition.

      • Nome da coluna de partição: especifique o nome da coluna de origem nos tipos inteiro ou date/datetime (int, smallint, bigint, date, smalldatetime, datetime, datetime2, ou datetimeoffset) usado pelo particionamento de intervalo para cópia paralela. Se não for especificado, o índice ou a chave primária da tabela serão detectados automaticamente e usados como a coluna de partição.

        Se você usar uma consulta para recuperar os dados de origem, conecte ?DfDynamicRangePartitionCondition na cláusula WHERE. Para ver um exemplo, confira a seção Cópia paralela do banco de dados SQL.

      • Limite superior da partição: especifique o valor máximo da coluna de partição para divisão do intervalo de partição. Esse valor é usado para decidir o passo da partição, não para filtrar as linhas na tabela. Todas as linhas na tabela ou no resultado da consulta serão particionadas e copiadas. Se não for especificado, a atividade Copy detectará o valor automaticamente. Para ver um exemplo, confira a seção Cópia paralela do banco de dados SQL.

      • Limite inferior da partição: especifique o valor mínimo da coluna de partição para divisão do intervalo de partição. Esse valor é usado para decidir o passo da partição, não para filtrar as linhas na tabela. Todas as linhas na tabela ou no resultado da consulta serão particionadas e copiadas. Se não for especificado, a atividade Copy detectará o valor automaticamente. Para ver um exemplo, confira a seção Cópia paralela do banco de dados SQL.

  • Colunas adicionais: adicione mais colunas de dados para armazenar o caminho relativo ou o valor estático dos arquivos de origem. A expressão tem suporte para o último. Para obter mais informações, acesse Adicionar colunas adicionais durante a cópia.

Destino

As propriedades a seguir têm suporte para o banco de dados SQL na guia Destino de uma atividade de cópia.

Captura de tela mostrando a guia Destino.

As seguintes propriedades são necessárias:

  • Conexão: selecione um banco de dados SQL existente referente à etapa neste artigo.

  • Opção de Tabela: Selecione entre Usar existente ou Criação automática de tabela.

    • Se você selecionar Usar existente:

      • Tabela: Especifique o nome do banco de dados SQL para gravar dados. Escolha uma tabela existente na lista suspensa ou selecione Enter manualmente para inserir o esquema e o nome da tabela.
    • Se você selecionar Criar tabela automaticamente:

      • Tabela: Ele cria automaticamente a tabela (se inexistente) no esquema de origem, que não tem suporte quando o procedimento armazenado é usado como comportamento de gravação.

Em Avançado, você pode especificar os seguintes campos:

  • Comportamento de gravação: define o comportamento de gravação quando a origem é arquivos de um armazenamento de dados baseado em arquivo. Você pode escolher Inserir, Upsert ou procedimento armazenado.

    Captura de tela da aba comportamento de gravação.

    • Insira: escolha esta opção se os dados de origem tiverem inserções.

    • Upsert: escolha essa opção se os dados de origem tiverem inserções e atualizações.

      • Use TempDB: especifique se uma tabela temporária global ou uma tabela física deve ser usada como a tabela provisória para upsert. Por padrão, o serviço usa a tabela temporária global como a tabela provisória e essa caixa de seleção está selecionada.
        Se você gravar uma grande quantidade de dados no banco de dados SQL, desmarque isto e especifique um nome de esquema no qual o Data Factory criará uma tabela intermediária para carregar dados anteriores e limpar automaticamente após a conclusão. Verifique se o usuário criou a permissão de tabela no banco de dados e altere a permissão no esquema. Caso não seja especificado, uma tabela temporária global será usada como preparação.

        Captura de tela mostrando a opção Usar TempDB.

      • Selecione o esquema de banco de dados do usuário: quando o Uso do TempDB não estiver selecionado, especifique um nome de esquema sob o qual o Data Factory criará uma tabela intermediária para carregar os dados de entrada e limpá-los automaticamente após a conclusão. Crie a permissão de tabela no banco de dados e altere a permissão no esquema.

        Observação

        Você deve ter a permissão para criar e excluir tabelas. Por padrão, uma tabela provisória compartilhará o mesmo esquema de uma tabela de destino.

        Captura de tela mostrando não selecionar Usar TempDB.

      • Colunas de chave: escolha qual coluna é usada para determinar se uma linha da origem corresponde a uma linha do destino.

    • Nome da procedure armazenada: Selecione a procedure armazenada na lista suspensa.

  • Bloqueio de tabela para inserção em massa: Escolha Sim ou Não. Use essa configuração para melhorar o desempenho da cópia durante uma operação de inserção em massa em uma tabela sem índice de vários clientes. Para obter mais informações, vá para BULK INSERT (Transact-SQL)

  • Script de pré-cópia: especifique um script para a atividade de cópia a ser executada antes de gravar dados em uma tabela de destino em cada execução. Você pode usar essa propriedade para limpar os dados previamente carregados.

  • Tempo limite do lote de gravação: especifique o tempo de espera para que a operação de inserção em lote termine antes de atingir o tempo limite. O valor permitido é timespan. O valor padrão é "00:30:00" (30 minutos).

  • Tamanho do lote de gravação: especifique o número de linhas a serem inseridas na tabela SQL por lote. O valor permitido é inteiro (número de linhas). Por padrão, o serviço determina dinamicamente o tamanho do lote apropriado com base no tamanho da linha.

  • Máximo de conexões simultâneas: especifique o limite superior de conexões simultâneas estabelecidas com o armazenamento de dados durante a execução da atividade. Especifique um valor somente quando desejar limitar as conexões simultâneas.

Mapeamento

Para a configuração da guia Mapeamento, se você não usar o banco de dados SQL com criação automática de tabelas como destino, vá para Mapeamento.

Se você utilizar um banco de dados SQL e configurar a criação automática de tabelas como destino, além das configurações em Mapeamento, você poderá editar os tipos das colunas de destino. Depois de selecionar Esquemas de importação, você pode especificar o tipo de coluna em seu destino.

Por exemplo, o tipo da coluna ID na origem é int, e você pode alterá-lo para o tipo float durante o mapeamento para a coluna de destino.

Captura de tela do mapeamento do tipo da coluna de destino.

Configurações

Para configuração da guia Configurações, acesse Definir suas outras configurações na guia configurações.

Cópia paralela do banco de dados SQL

O conector do banco de dados SQL na atividade de cópia fornece particionamento de dados interno para copiar dados em paralelo. Você pode encontrar opções de particionamento de dados na guia Origem da atividade de cópia.

Quando você habilita a cópia particionada, a atividade de cópia executa consultas paralelas na fonte do banco de dados SQL para carregar dados por partições. O grau paralelo é controlado pelo grau de paralelismo de cópia na guia configurações de atividade de cópia. Por exemplo, se você definir Grau de paralelismo de cópia como quatro, o serviço gerará e executará simultaneamente quatro consultas com base na opção e nas configurações de partição especificadas, e cada consulta recuperará uma parte dos dados do banco de dados SQL.

Recomenda-se que você habilite a cópia paralela com particionamento de dados, especialmente ao carregar um grande volume de dados do banco de dados SQL. Veja a seguir as configurações sugeridas para cenários diferentes. Ao copiar dados para o armazenamento de dados baseado em arquivo, recomendamos gravá-los em uma pasta como vários arquivos (apenas especifique o nome da pasta) para ter um desempenho melhor do que gravar em um arquivo.

Scenario Configurações sugeridas
Carregamento completo de uma tabela grande com partições físicas. Opção de partição: partições físicas da tabela.

Durante a execução, o serviço detecta automaticamente as partições físicas e copia os dados por partição.

Para verificar se a tabela tem partição física, confira esta consulta.
Carregamento completo de uma tabela grande, sem partições físicas e com uma coluna de inteiro ou de datetime para o particionamento de dados. Opções de partição: partição de intervalo dinâmico.
Coluna de partição (opcional): especifique a coluna usada para particionar dados. Se não for especificada, a coluna de chave primária ou de índice será usada.
Limite superior da partição e limite inferior da partição (opcional): especifique se deseja determinar o stride da partição. A finalidade não é filtrar as linhas na tabela, todas as linhas da tabela serão particionadas e copiadas. Se não for especificado, a atividade de cópia detectará automaticamente os valores e poderá levar muito tempo, dependendo dos valores MIN e MAX. É recomendável fornecer limite superior e limite inferior.

Por exemplo, se a “ID” da coluna de partição tiver valores no intervalo de 1 a 100 e você definir o limite inferior como 20 e o limite superior como 80, com a cópia paralela definida como 4, o serviço recuperará dados por 4 IDs de partição no intervalo <=20, [21, 50], [51, 80], e >=81, respectivamente.
Carregar uma grande quantidade de dados usando uma consulta personalizada, sem partições físicas, com uma coluna de inteiro ou data/datetime para o particionamento de dados. Opções de partição: partição de intervalo dinâmico.
Consulta: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>.
Coluna de partição: especifique a coluna usada para particionar dados.
Limite superior da partição e limite inferior da partição (opcional): especifique se deseja determinar o stride da partição. A finalidade não é filtrar as linhas na tabela, todas as linhas na consulta serão particionadas e copiadas. Se não for especificado, a atividade Copy detectará o valor automaticamente.

Por exemplo, se a “ID” da coluna de partição tiver valores no intervalo de 1 a 100 e você definir o limite inferior como 20 e o limite superior como 80, com a cópia paralela definida como 4, o serviço recuperará dados por 4 IDs de partição no intervalo <=20, [21, 50], [51, 80], e >=81, respectivamente.

Veja mais exemplos de consultas para diferentes cenários:
• Consultar a tabela inteira:
SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition
• Consulta em uma tabela com seleção de colunas e filtros adicionais na cláusula where:
SELECT <column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
• Consulta com subconsultas:
SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
• Consulta com partição em subconsulta:
SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition) AS T

Melhores práticas para carregar dados com a opção de partição:

  • Escolha a coluna distinta como coluna de partição (como chave primária ou chave exclusiva) para evitar a distorção de dados.
  • Se a tabela tiver partição interna, use a opção de partição Partições físicas da tabela para obter um melhor desempenho.

Exemplo de consulta para verificar a partição 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]'

Se a tabela tiver uma partição física, você verá "HasPartition" como "yes" conforme segue.

Captura de tela de um resultado da consulta SQL.

Sumário da tabela

As tabelas a seguir contêm mais informações sobre a atividade de cópia no banco de dados SQL.

Source

Nome Description Value Obrigatório Propriedade do script JSON
Conexão Sua conexão com o repositório de dados de origem. <sua conexão> Yes conexão
Usar a consulta A maneira de ler dados. Aplique Tabela para ler dados da tabela especificada ou aplicar Consulta para ler dados usando consultas SQL. Tabela
Consulta
Procedimento armazenado
Yes /
Para Tabela
nome do esquema Nome do esquema. < seu nome de esquema > Não esquema
nome da tabela Nome da tabela. < seu nome de tabela > Não tabela
Para Query
Consulta Especifique a consulta SQL personalizada para ler dados. Por exemplo: SELECT * FROM MyTable. < Consultas SQL > Não sqlReaderQuery
Para procedimento armazenado
Nome do procedimento armazenado Nome do procedimento armazenado. < o nome do procedimento armazenado > Não sqlReaderStoredProcedureName
Tempo limite da consulta (minutos) O tempo limite para a execução do comando de consulta, o padrão é de 120 minutos. Se o parâmetro for definido para essa propriedade, os valores permitidos serão intervalos de tempo, como "02:00:00" (120 minutos). intervalo de tempo Não queryTimeout
Nível de isolamento Especifica o comportamento de bloqueio de transação da origem SQL. • Leitura comprometida
• Leitura não confirmada
• Leitura repetível
•Serializável
•Instantâneo
Não nívelDeIsolamento
• ReadCommitted
• ReadUncommitted
• RepeatableRead
•Serializável
• Instantâneo
Opção de partição As opções de particionamento de dados usadas para carregar dados do banco de dados SQL. Nenhum
• Partições físicas da tabela
• Intervalo dinâmico
Não opçãoDePartição:
• PartiçõesFísicasDaTabela
• DynamicRange
Para intervalo dinâmico
Nome da coluna de partição O nome da coluna de origem do tipo inteiro ou date/datetime (int, smallint, bigint, date, smalldatetime, datetime, datetime2 ou datetimeoffset), usado pelo particionamento de intervalo para cópia paralela. Se não for especificado, o índice ou a chave primária da tabela serão detectados automaticamente e usados como a coluna de partição. Se você usar uma consulta para recuperar os dados de origem, conecte ?DfDynamicRangePartitionCondition na cláusula WHERE. < seus nomes de coluna de partição > Não nomeDaColunaDePartição
Limite superior da partição O valor máximo da coluna de partição para divisão do intervalo de partição. Esse valor é usado para decidir o passo da partição, não para filtrar as linhas na tabela. Todas as linhas na tabela ou no resultado da consulta serão particionadas e copiadas. Se não for especificado, a atividade Copy detectará o valor automaticamente. < seu limite superior de partição > Não limite superior da partição
Limite inferior da partição O valor mínimo da coluna de partição para divisão do intervalo de partição. Esse valor é usado para decidir o passo da partição, não para filtrar as linhas na tabela. Todas as linhas na tabela ou no resultado da consulta serão particionadas e copiadas. Se não for especificado, a atividade Copy detectará o valor automaticamente. < seu limite inferior de partição > Não partitionLowerBound
Colunas adicionais Adicione mais colunas de dados para armazenar o caminho relativo ou o valor estático dos arquivos de origem. A expressão tem suporte para o último. •Nome
• Valor
Não colunas adicionais:
• nome
•valor

Destino

Nome Description Value Obrigatório Propriedade do script JSON
Conexão Sua ligação com o banco de dados de destino. <sua conexão > Yes conexão
Opção de tabela Sua tabela de dados de destino. Selecione Usar existente ou Auto criar tabela. • Usar existente
• Criar tabela automaticamente
Yes esquema
tabela
Comportamento de gravação Define o comportamento de gravação quando a origem é arquivos de um armazenamento de dados baseado em arquivo. • Inserir
• Executar upsert
• Procedimento armazenado
Não writeBehavior:
•inserir
• operação de inserção/atualização
• sqlWriterStoredProcedureName
Bloqueio da tabela de inserção em massa Use essa configuração para melhorar o desempenho da cópia durante uma operação de inserção em massa em uma tabela sem índice de vários clientes. Sim ou Não (padrão) Não sqlWriterUseTableLock:
true ou false (padrão)
Para Upsert
Usar TempDB Se deve-se usar uma tabela temporária global ou uma tabela física como a tabela intermediária para upsert. selecionado (padrão) ou não selecionado Não useTempDB:
verdadeiro (padrão) ou falso
Colunas de chave Escolha qual coluna é usada para determinar se uma linha da origem corresponde a uma linha do destino. < sua coluna chave> Não keys
Para procedimento armazenado
Nome do procedimento armazenado Essa propriedade é o nome do procedimento armazenado que lê dados da tabela de origem. A última instrução SQL deve ser uma instrução SELECT no procedimento armazenado. < nome do procedimento armazenado > Não sqlWriterStoredProcedureName
Script de pré-cópia Um script para a Atividade de Cópia a ser executada antes de gravar dados em uma tabela de destino em cada execução. Você pode usar essa propriedade para limpar os dados previamente carregados. <script de pré-cópia>
(cadeia de caracteres)
Não preCopyScript
Tempo limite do lote de gravação O tempo de espera para que a operação de inserção em lote seja concluída antes de atingir o tempo limite. O valor permitido é timespan. O valor padrão é "00:30:00" (30 minutos). intervalo de tempo Não writeBatchTimeout
Tamanho do lote de gravação O número de linhas a serem inseridas na tabela SQL por lote. Por padrão, o serviço determina dinamicamente o tamanho do lote apropriado com base no tamanho da linha. <número de linhas>
(inteiro)
Não writeBatchSize
Máximo de conexões simultâneas O limite superior de conexões simultâneas estabelecidas para o armazenamento de dados durante a execução da atividade. Especifique um valor somente quando desejar limitar as conexões simultâneas. <limite superior de conexões simultâneas>
(inteiro)
Não maxConcurrentConnections