Compartilhar via


Como configurar o Banco de Dados SQL do Azure na atividade copy

Este artigo descreve como usar a atividade de cópia no pipeline de dados para copiar dados de e para o Banco de Dados SQL do Azure.

Configuração com suporte

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

Geral

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

Fonte

As propriedades a seguir têm suporte para SQL do Azure Banco de Dados 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:

  • Tipo de armazenamento de dados: selecione Externo.
  • Conexão: selecione uma conexão de banco de dados SQL do Azure na lista de conexões. Se a conexão não existir, crie uma nova conexão de banco de dados SQL do Azure selecionando Novo.
  • Tipo de conexão: selecione SQL do Azure Banco de Dados.
  • Tabela: selecione a tabela em seu banco de dados na lista suspensa. Ou marcar Editar para inserir o nome da tabela manualmente.
  • Visualizar dados: selecione Visualizar dados para visualizar os dados em sua tabela.

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

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

    • Tabela: Leia os dados da tabela que você especificou em Tabela se você selecionar esse botão.

    • Consulta: Especifique a consulta SQL personalizada para ler os 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: Use o procedimento armazenado que lê os dados da tabela de origem. A última instrução SQL deve ser uma instrução SELECT no procedimento armazenado.

      • Nome do procedimento armazenado: selecione o procedimento armazenado ou especifique o nome do procedimento armazenado manualmente ao marcar a caixa Editar para ler dados da tabela de origem.

      • Parâmetros de procedimento armazenado: especifique valores para parâmetros de procedimento armazenado. Valores permitidos são pares de nome ou valor. Os nomes e o uso de maiúsculas e minúsculas de parâmetros devem corresponder aos nomes e o uso de maiúsculas e minúsculas dos parâmetros do procedimento armazenado.

        Captura de tela mostrando as configurações do procedimento armazenado.

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

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

  • Nível de isolamento: Especifica o comportamento de bloqueio de transação para a fonte SQL. Os valores permitidos são: None, ReadCommitted, ReadUncommitted, RepeatableRead, Serializable, ou Snapshot. Se não for especificado, None nível de isolamento será usado. Consulte IsolationLevel Enum para obter mais detalhes.

    Captura de tela mostrando as configurações do 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 do Azure. Os valores permitidos são: None (padrão), Partições físicas da tabela e Intervalo dinâmico. Quando uma opção de partição está ativada (ou seja, não é None), o grau de paralelismo para carregar dados simultaneamente de um Banco de Dados SQL do Azure é controlado pela configuração de cópia paralela na atividade de cópia.

    Captura de tela mostrando as configurações da opção Partition.

    • None: 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 de 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. Exemplo de Consulta: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition.

      • Nome da coluna de partição: Especifique o nome da coluna de origem no tipo inteiro ou data/datetime ( int, smallint, bigint, date, smalldatetime, datetime, datetime2 o datetimeoffset) que é usada pelo particionamento de intervalo para cópia paralela. Se não especificado, o índice chave primária da tabela será detectada automaticamente e usado como a coluna de partição.
      • Limite superior da partição: especifique o valor máximo da coluna de partição para divisão de intervalo de partição. Esse valor é usado para decidir o stride da partição, e não para filtrar as linhas na tabela. Todas as linhas da tabela ou do resultado da consulta são particionadas e copiadas.
      • Limite inferior da partição: especifique o valor mínimo da coluna de partição para a divisão do intervalo de partição. Esse valor é usado para decidir o stride da partição, e não para filtrar as linhas na tabela. Todas as linhas da tabela ou do resultado da consulta são particionadas e copiadas.
  • Colunas adicionais: adicione colunas de dados adicionais 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 seguintes propriedades são compatíveis com o Banco de Dados SQL do Azure na guia Destino de uma atividade de cópia.

Captura de tela mostrando a guia de destino.

As seguintes propriedades são necessárias:

  • Tipo de armazenamento de dados: selecione Externo.
  • Conexão: selecione uma conexão de banco de dados SQL do Azure na lista de conexões. Se a conexão não existir, crie uma nova conexão de banco de dados SQL do Azure selecionando Novo.
  • Tipo de conexão: selecione SQL do Azure Banco de Dados.
  • Tabela: selecione a tabela em seu banco de dados na lista suspensa. Ou marcar Editar para inserir o nome da tabela manualmente.
  • Visualizar dados: selecione Visualizar dados para visualizar os dados em sua tabela.

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

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

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

    • Insert: 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 deseja usar uma tabela temporária global ou uma tabela física como 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á marcada.

        Captura de tela mostrando a seleção de Use TempDB.

      • Selecione o esquema de banco de dados do usuário: quando a caixa de seleção Usar TempDB não estiver selecionada, especifique o esquema provisório para criar uma tabela provisória se uma tabela física for usada.

        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.

        A captura de tela mostra que não é possível selecionar Use TempDB.

      • Colunas de Chave: Especifique os nomes de coluna para identificação de linha exclusiva. Uma única chave ou uma série de chaves pode ser usada. Se não for especificada, a chave primária será usada.

    • Procedimento armazenado: use o procedimento armazenado que define como aplicar os dados de origem em uma tabela de destino. Este procedimento armazenado é chamado por lote.

      • Nome do procedimento armazenado: selecione o procedimento armazenado ou especifique o nome do procedimento armazenado manualmente ao marcar a caixa Editar para ler dados da tabela de origem.

      • Parâmetros de procedimento armazenado: especifique valores para parâmetros de procedimento armazenado. Valores permitidos são pares de nome ou valor. Os nomes e o uso de maiúsculas e minúsculas de parâmetros devem corresponder aos nomes e o uso de maiúsculas e minúsculas dos parâmetros do procedimento armazenado.

        Captura de tela mostrando as configurações do procedimento armazenado.

  • Bloqueio de tabela de 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, acesse BULK INSERT (Transact-SQL)

  • Opção de tabela: especifica se a tabela de destino deve ser criada automaticamente se a tabela não existir com base no esquema de origem. Escolha None ou Criar tabela automaticamente. Não há suporte para a criação automática de tabela quando o destino especifica um procedimento armazenado.

  • 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 para o armazenamento de dados durante a execução da atividade. Especifique um valor somente quando desejar limitar as conexões simultâneas.

  • Desabilitar a análise de métricas de desempenho: essa configuração é usada para coletar métricas, como DTU, DWU, RU e assim por diante, para otimização e recomendações de desempenho de cópia. Se você estiver preocupado com esse comportamento, marque esta caixa de seleção.

Mapeamento

Para a configuração da guia Mapeamento, se você não aplicar o Banco de Dados SQL do Azure com tabela de criação automática como destino, acesse Mapeamento.

Se você aplicar o Banco de Dados SQL do Azure com tabela de criação automática como destino, exceto a configuração em Mapeamento, poderá editar o tipo 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 ao mapear para a coluna de destino.

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

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 do Azure

O conector do Banco de Dados SQL do Azure na atividade Copy 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 Copy executa consultas paralelas com relação à sua origem do Banco de Dados SQL do Azure para carregar dados por partições. O grau paralelo é controlado pelo Grau de paralelismo de cópia na guia configurações de atividade Copy. Por exemplo, ao definir Grau de paralelismo de cópia como quatro, o serviço gera e executa simultaneamente quatro consultas com base na opção de partição especificada e nas configurações, e cada consulta recupera uma parte dos dados do Banco de Dados SQL do Azure.

É recomendável habilitar a cópia paralela com o particionamento de dados, especialmente quando você carrega grandes quantidades de dados do Banco de Dados SQL do Azure. 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.

Cenário 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, as atividades Copy detectarão os valores 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.
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 de cópia 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
• Consultar em uma tabela com seleção de coluna e filtros de cláusula "where" adicionais:
SELECT <column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
• Consultar com subconsultas:
SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
• Consultar com partição na 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 uma partição interna, use a opção de partição Partições físicas da tabela para ter 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.

Resultado da consulta SQL.

Resumo da tabela

As tabelas a seguir contêm mais informações sobre a atividade de cópia no Banco de Dados SQL do Azure.

Fonte

Nome Descrição Valor Obrigatório Propriedade de script JSON
Tipo de armazenamento de dados Seu tipo de armazenamento de dados. Externo Yes /
Conexão Sua conexão com o armazenamento de dados de origem. <sua conexão> Sim connection
Tipo de conexão Seu tipo de conexão. Selecione Banco de Dados SQL do Azure. Banco de Dados SQL do Azure Sim /
Tabela Sua tabela de dados de origem. <nome da tabela de destino> Sim esquema
tabela
Usar a consulta A consulta SQL personalizada para ler os dados. • Nenhum
• Consulta
• Procedimento armazenado
Não

• sqlReaderQuery
• sqlReaderStoredProcedureName, storedProcedureParameters
Tempo-limite da consulta O tempo limite para a execução do comando de consulta, padrão, é de 120 minutos. TimeSpan Não queryTimeout
Nível de Isolamento Especifica o comportamento de bloqueio de transação para a origem do SQL. • None
• ReadCommitted
• ReadUncommitted
• RepeatableRead
• Serializável
• Snapshot
Não isolationLevel
Opção de partição As opções de particionamento de dados usadas para carregar dados do Banco de Dados SQL do Azure. • None
• Partições físicas da tabela
• Intervalo dinâmico
Não partitionOption:
• PhysicalPartitionsOfTable
• DynamicRange
Colunas adicionais Adicione mais colunas de dados ao caminho relativo ou valor estático dos arquivos de origem do repositório. A expressão tem suporte para o último. • Nome
• Valor
Não additionalColumns:
• nome
• valor

Destino

Nome Descrição Valor Obrigatório Propriedade de script JSON
Tipo de armazenamento de dados Seu tipo de armazenamento de dados. Externo Yes /
Conexão Sua conexão com o armazenamento de dados de destino. <sua conexão> Sim connection
Tipo de conexão Seu tipo de conexão. Selecione Banco de Dados SQL do Azure. Banco de Dados SQL do Azure Sim /
Tabela Sua tabela de dados de destino. <nome da tabela de destino> Sim esquema
tabela
Comportamento de gravação Define o comportamento de gravação quando a origem são arquivos de um armazenamento de dados baseado em arquivo. • Insert
• Upsert
• Procedimento armazenado
Não writeBehavior:
• insert
• upsert
• sqlWriterStoredProcedureName, sqlWriterTableType, storedProcedureParameters
Bloqueio de 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 Não sqlWriterUseTableLock:
true ou false
Opção de tabela Especifica se a tabela de destino deve ser criada automaticamente caso não exista com base no esquema de origem. • Nenhum
• Criação automática de tabela
Não tableOption:
• autoCreate
Script de pré-cópia Um script para a Copy Activity executar 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)
No preCopyScript
Tempo limite de gravação em lote 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). TimeSpan No 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 com o armazenamento de dados durante a execução da atividade. Especifique um valor somente quando desejar limitar as conexões simultâneas. <limite máximo de conexões simultâneas>
(inteiro)
Não maxConcurrentConnections
Desabilitar a análise de métricas de desempenho Essa configuração é usada para coletar métricas, como DTU, DWU, RU e assim por diante, para copiar recomendações e otimização de desempenho. Se você estiver preocupado com esse comportamento, marque esta caixa de seleção. selecionar ou desmarcar Não disableMetricsCollection:
true ou false