Configurar o SQL Server em uma atividade de cópia
Este artigo descreve como usar a atividade de cópia no pipeline de dados para copiar dados de e para o SQL Server.
Configuração suportada
Para a configuração de cada guia em atividade de cópia, vá para as seções a seguir, respectivamente.
- General (Geral)
- Source
- Destino
- Mapeamento
- Definições
Geral
Consulte as orientações de configurações gerais para configurar a guia Configurações gerais.
Origem
As propriedades a seguir têm suporte para o SQL Server na guia Origem de uma atividade de cópia.
As seguintes propriedades são necessárias:
Tipo de armazenamento de dados: Selecione Externo.
Conexão: Selecione uma conexão do SQL Server na lista de conexões. Se a conexão não existir, crie uma nova conexão do SQL Server selecionando Novo.
Tipo de conexão: Selecione SQL server.
Usar consulta: especifique a maneira de ler dados. Você pode escolher Tabela, Consulta ou Procedimento armazenado. A lista a seguir descreve a configuração de cada configuração:
Tabela: Leia os dados da tabela especificada. Selecione sua tabela de origem na lista suspensa ou selecione Editar para inseri-la manualmente.
Consulta: especifique a consulta SQL personalizada para ler dados. Um exemplo é
select * from MyTable
. Ou selecione o ícone de lápis para editar no editor de códigos.Procedimento armazenado: use o 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: selecione o procedimento armazenado ou especifique o nome do procedimento armazenado manualmente ao selecionar Editar para ler dados da tabela de origem.
Parâmetros de procedimento armazenado: especifique valores para parâmetros de procedimento armazenado. Os valores permitidos são pares de nome ou valor. Os nomes e o invólucro dos parâmetros devem corresponder aos nomes e invólucros dos parâmetros do procedimento armazenado. Você pode selecionar Importar parâmetros para obter os parâmetros do procedimento armazenado.
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 um parâmetro for definido para essa propriedade, os valores permitidos serão de intervalo de tempo, como "02:00:00" (120 minutos).
Nível de isolamento: especifica o comportamento de bloqueio de transação para a fonte SQL. Os valores permitidos são: Nenhum, Leitura confirmada, Leitura não confirmada, Leitura repetível, Serializável ou Instantâneo. Se não for especificado, o nível de isolamento padrão do banco de dados será usado. Consulte IsolationLevel Enum para obter mais detalhes.
Opção de partição: especifique as opções de particionamento de dados usadas para carregar dados do SQL Server. 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 simultaneamente dados de um servidor SQL é controlado pela guia Grau de paralelismo de cópia na guia Configurações de atividade de cópia.
Nenhum: escolha esta configuração para não usar uma partição.
Partições físicas da tabela: Ao usar uma partição física, a coluna e o mecanismo da partição são determinados automaticamente com base na sua definição de tabela física.
Intervalo dinâmico: Ao usar a consulta com paralelo habilitado, o parâmetro de partição de intervalo (
?DfDynamicRangePartitionCondition
) é necessário. Exemplo de consulta:SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition
.Nome da coluna da partição: especifique o nome da coluna de origem no tipo inteiro ou data/data/hora (
int
,smallint
,bigint
,date
,datetime2
smalldatetime
datetime
, , oudatetimeoffset
) que é usado pelo particionamento de intervalo para cópia paralela. Se não for especificado, o índice ou a chave primária da tabela será detetado automaticamente e usado como a coluna de partição.Se você usar uma consulta para recuperar os dados de origem, conecte
?DfDynamicRangePartitionCondition
a cláusula WHERE. Para obter um exemplo, consulte 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 a divisão do intervalo de partições. Esse valor é usado para decidir a passada 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 de cópia detetará automaticamente o valor. Para obter um exemplo, consulte 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 a divisão do intervalo de partições. Esse valor é usado para decidir a passada 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 de cópia detetará automaticamente o valor. Para obter um exemplo, consulte a seção Cópia paralela do banco de dados SQL.
Colunas adicionais: adicione colunas de dados adicionais para armazenar o caminho relativo ou o valor estático dos arquivos de origem. A expressão é suportada para este último.
Tenha em conta os seguintes pontos:
- Se Query for especificado para a origem, a atividade de cópia executará essa consulta na fonte do SQL Server para obter os dados. Você também pode especificar um procedimento armazenado especificando os parâmetros Nome do procedimento armazenado e Procedimento armazenado se o procedimento armazenado usar parâmetros.
- Ao usar o procedimento armazenado na origem para recuperar dados, observe se o procedimento armazenado for projetado como retornando esquema diferente quando um valor de parâmetro diferente for passado, você poderá encontrar falha ou ver um resultado inesperado ao importar esquema da interface do usuário ou ao copiar dados para o banco de dados SQL com a criação automática de tabelas.
Destino
As propriedades a seguir têm suporte para o SQL Server na guia Destino de uma atividade de cópia.
As seguintes propriedades são necessárias:
Tipo de armazenamento de dados: Selecione Externo.
Conexão: Selecione uma conexão do SQL Server na lista de conexões. Se a conexão não existir, crie uma nova conexão do SQL Server selecionando Novo.
Tipo de conexão: Selecione SQL server.
Opção Tabela: Você pode escolher Usar existente para usar a tabela especificada. Ou escolha Criar tabela automática para criar automaticamente uma tabela de destino se a tabela não existir no esquema de origem e observe que essa seleção não é suportada quando o procedimento armazenado é usado como o comportamento de gravação.
Se você selecionar Usar existente:
- Tabela: Selecione a tabela no banco de dados de destino na lista suspensa. Ou marque Editar para inserir o nome da tabela manualmente.
Se você selecionar: Criar tabela automaticamente:
- Tabela: especifique o nome da tabela de destino criada automaticamente.
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 Inserir, Upsert ou Procedimento armazenado.
Inserir: escolha esta opção use inserir comportamento de gravação para carregar dados no SQL Server.
Upsert: escolha esta opção use o comportamento de gravação upsert para carregar dados no SQL Server.
Use TempDB: especifique se deseja usar uma tabela temporária global ou uma tabela física 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 propriedade é selecionada.
Selecionar esquema de banco de dados do usuário: Quando a opçã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.
Nota
Você deve ter permissão para criar e excluir tabelas. Por padrão, uma tabela provisória compartilhará o mesmo esquema que uma tabela de destino.
Colunas de chave: especifique os nomes das colunas para identificação de linha exclusiva. Uma única chave ou uma série de chaves podem ser usadas. Se não for especificado, a chave primária será usada.
Procedimento armazenado: use o procedimento armazenado que define como aplicar dados de origem em uma tabela de destino. Este procedimento armazenado é invocado por lote. Para operações que são executadas apenas uma vez e não têm nada a ver com dados de origem, por exemplo, excluir ou trugar, use a propriedade Pre-copy script .
Nome do procedimento armazenado: selecione o procedimento armazenado ou especifique o nome do procedimento armazenado manualmente ao verificar a opção Editar para ler dados da tabela de origem.
Parâmetros do procedimento armazenado:
- Tipo de tabela: especifique o nome do tipo de tabela a ser usado no procedimento armazenado. A atividade de cópia disponibiliza os dados que estão sendo movidos em uma tabela temporária com esse tipo de tabela. O código de procedimento armazenado pode mesclar os dados que estão sendo copiados com os dados existentes.
- Nome do parâmetro do tipo de tabela: especifique o nome do parâmetro do tipo de tabela especificado no procedimento armazenado.
- Parâmetros: especifique valores para parâmetros de procedimento armazenado. Os valores permitidos são pares de nome ou valor. Os nomes e o invólucro dos parâmetros devem corresponder aos nomes e invólucros dos parâmetros do procedimento armazenado. Você pode selecionar Importar parâmetros para obter os parâmetros do procedimento armazenado.
Bloqueio de tabela de inserção em massa: escolha Sim ou Não (padrã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. Você pode especificar essa propriedade ao selecionar Inserir ou Upsert como seu comportamento de gravação. 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 pré-carregados.
Tempo limite de gravação do lote: especifique o tempo de espera para que a operação de inserção do lote seja concluída antes que ela atinja o tempo limite. O valor permitido é timepan. Se nenhum valor for especificado, o tempo limite será padronizado como "02:00:00".
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 de lote apropriado com base no tamanho da linha.
Máximo de conexões simultâneas: o limite superior de conexões simultâneas estabelecido para o armazenamento de dados durante a execução da atividade. Especifique um valor somente quando quiser limitar conexões simultâneas.
Mapeamento
Para a configuração da guia Mapeamento, se você não aplicar o SQL Server com a criação automática de tabela como destino, vá para Mapeamento.
Se você aplicar o SQL Server com a tabela de criação automática como destino, exceto a configuração em Mapeamento, poderá editar o tipo para suas colunas de destino. Depois de selecionar Importar esquemas, você pode especificar o tipo de coluna no 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.
Definições
Para Configuração da guia Configurações , vá para Configurar suas outras configurações na guia Configurações.
Cópia paralela do banco de dados SQL
O conector do SQL Server 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 SQL Server 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 SQL Server.
Sugere-se que habilite a cópia paralela com particionamento de dados, especialmente quando você carrega uma grande quantidade de dados do SQL Server. A seguir estão sugeridas configurações para diferentes cenários. Ao copiar dados para o armazenamento de dados baseado em arquivo, é recomendável gravar em uma pasta como vários arquivos (especifique apenas o nome da pasta), caso em que o desempenho é melhor do que gravar em um único arquivo.
Cenário | Configurações sugeridas |
---|---|
Carga completa a partir de uma mesa grande, com divisórias físicas. | Opção de partição: Partições físicas da tabela. Durante a execução, o serviço deteta automaticamente as partições físicas e copia os dados por partições. Para verificar se a sua tabela tem partição física ou não, pode consultar esta consulta. |
Carga completa a partir de uma tabela grande, sem partições físicas, enquanto com uma coluna inteira ou datetime para 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 especificado, a coluna de chave primária será usada. Limite superior da partição e limite inferior da partição (opcional): Especifique se deseja determinar o passo da partição. Isso não é para filtrar as linhas na tabela, todas as linhas na tabela serão particionadas e copiadas. Se não for especificado, a atividade de cópia deteta automaticamente os valores e pode levar muito tempo, dependendo dos valores MIN e MAX. Recomenda-se fornecer limite superior e limite inferior. Por exemplo, se a coluna de partição "ID" tiver valores que variam de 1 a 100 e você definir o limite inferior como 20 e o limite superior como 80, com cópia paralela como 4, o serviço recuperará dados por 4 partições - IDs no intervalo <=20, [21, 50], [51, 80] e >=81, respectivamente. |
Carregue uma grande quantidade de dados usando uma consulta personalizada, sem partições físicas, enquanto com uma coluna inteira ou data/data/hora para 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 passo da partição. Isso não é para filtrar as linhas na tabela, todas as linhas no resultado da consulta serão particionadas e copiadas. Se não for especificado, a atividade de cópia detetará automaticamente o valor. Por exemplo, se a coluna de partição "ID" tiver valores que variam de 1 a 100 e você definir o limite inferior como 20 e o limite superior como 80, com cópia paralela como 4, o serviço recuperará dados por 4 partições - IDs no intervalo <=20, [21, 50], [51, 80] e >=81, respectivamente. Aqui estão mais consultas de exemplo para diferentes cenários: • Consulte toda a tabela: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition • Consulta a partir de uma tabela com seleção de colunas e filtros adicionais de 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 |
Práticas recomendadas para carregar dados com a opção de partição:
- Escolha uma coluna distinta como coluna de partição (como chave primária ou chave exclusiva) para evitar 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 partição física, você verá "HasPartition" como "sim" como a seguir.
Resumo da tabela
Consulte a tabela a seguir para obter o resumo e mais informações sobre a atividade de cópia do SQL Server.
Fonte da informação
Nome | Descrição | valor | Necessário | Propriedade de script JSON |
---|---|---|---|---|
Tipo de armazenamento de dados | Seu tipo de armazenamento de dados. | Externa | Sim | / |
Ligação | Sua conexão com o armazenamento de dados de origem. | < A sua ligação > | Sim | ligação |
Tipo de ligação | O seu tipo de ligação. Selecione SQL server. | SQL Server | Sim | / |
Utilizar consulta | A consulta SQL personalizada para ler dados. | • Tabela • Consulta • Procedimento armazenado |
Não | / |
Tabela | Sua tabela de dados de origem. | < Nome da sua mesa> | Não | Esquema tabela |
Consulta | A consulta SQL personalizada para ler dados. | < a sua questão > | Não | sqlReaderQuery |
Nome do procedimento armazenado | Esta 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 | sqlReaderStoredProcedureName |
Parâmetro do procedimento armazenado | Esses parâmetros são para o procedimento armazenado. Os valores permitidos são pares de nome ou valor. Os nomes e o invólucro dos parâmetros devem corresponder aos nomes e invólucros dos parâmetros do procedimento armazenado. | < Pares de nome ou valor > | Não | storedProcedureParameters |
Tempo limite da consulta | O tempo limite para a execução do comando de consulta. | timespan (o padrão é 120 minutos) |
Não | queryTimeout |
Nível de isolamento | Especifica o comportamento de bloqueio de transação para a fonte SQL. | • Ler comprometido • Ler sem compromisso • Leitura repetível • Serializável • Instantâneo |
Não | isolationLevel: • ReadCommitted • ReadUncommitted • Leitura repetível • Serializável • Instantâneo |
Opção de partição | As opções de particionamento de dados usadas para carregar dados do SQL Server. | • Nenhum (padrão) • Divisórias físicas de mesa • Alcance dinâmico |
Não | partitionOption: • Nenhum (padrão) • PhysicalPartitionsOfTable • Gama dinâmica |
Nome da coluna da partição | O nome da coluna de origem no tipo inteiro ou data/data/hora (int , smallint , bigint , date , datetime2 smalldatetime datetime , , ou datetimeoffset ) que é usado pelo particionamento de intervalo para cópia paralela. Se não for especificado, o índice ou a chave primária da tabela será detetado automaticamente e usado como a coluna de partição. Se você usar uma consulta para recuperar os dados de origem, conecte ?DfDynamicRangePartitionCondition a cláusula WHERE. |
< os nomes das colunas da sua partição > | Não | partitionColumnName |
Limite superior da partição | O valor máximo da coluna de partição para divisão do intervalo de partições. Esse valor é usado para decidir a passada 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 de cópia detetará automaticamente o valor. | < O limite superior da sua partição > | Não | partiçãoUpperBound |
Limite inferior da partição | O valor mínimo da coluna de partição para divisão do intervalo de partições. Esse valor é usado para decidir a passada 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 de cópia detetará automaticamente o valor. | < o limite inferior da sua partição > | Não | partiçãoLowerBound |
Colunas adicionais | Adicione colunas de dados adicionais para armazenar o caminho relativo ou o valor estático dos arquivos de origem. A expressão é suportada para este último. | • Nome • Valor |
Não | adicionaisColunas: • nome • valor |
Informações sobre o destino
Nome | Descrição | valor | Necessário | Propriedade de script JSON |
---|---|---|---|---|
Tipo de armazenamento de dados | Seu tipo de armazenamento de dados. | Externa | Sim | / |
Ligação | Sua conexão com o armazenamento de dados de destino. | < A sua ligação > | Sim | ligação |
Tipo de ligação | O seu tipo de ligação. Selecione SQL server. | SQL Server | Sim | / |
Opção de tabela | Especifica se a tabela de destino deve ser criada automaticamente se ela não existir com base no esquema de origem. | • Utilização existente • Criação automática de tabelas |
Não | tableOption: • Criação automática |
Tabela | Sua tabela de dados de destino. | <Nome da sua mesa> | Sim | Esquema tabela |
Comportamento de escrita | O comportamento de gravação da atividade de cópia para carregar dados no banco de dados do SQL Server.. | • Inserir • Upsert • Procedimento armazenado |
Não | writeBehavior: • inserir • Upsert sqlWriterStoredProcedureName, sqlWriterTableType, storedProcedureTableTypeParameterName, storedProcedureParameters |
Usar o TempDB | Se deve usar uma tabela temporária global ou uma tabela física como a tabela provisória para upsert. | selecionado (padrão) ou não selecionado | Não | useTempDB: true (padrão) ou false |
Selecionar esquema de banco de dados do usuário | O esquema provisório para criar uma tabela provisória se a tabela física for usada. Nota: o usuário precisa ter a permissão para criar e excluir tabela. Por padrão, a tabela provisória compartilhará o mesmo esquema da tabela de destino. Aplique quando não selecionar Usar TempDB. | selecionado (padrão) ou não selecionado | Não | interimSchemaName |
Colunas-chave | Os nomes das colunas para identificação de linha exclusiva. Uma única chave ou uma série de chaves podem ser usadas. Se não for especificado, a chave primária será usada. | < A sua coluna chave> | Não | chaves |
Nome do procedimento armazenado | O nome do procedimento armazenado que define como aplicar dados de origem em uma tabela de destino. Este procedimento armazenado é invocado por lote. Para operações que são executadas apenas uma vez e não têm nada a ver com dados de origem, por exemplo, excluir ou trugar, use a propriedade Pre-copy script . | < o nome do procedimento armazenado > | Não | sqlWriterStoredProcedureName |
Tipo de tabela | O nome do tipo de tabela a ser usado no procedimento armazenado. A atividade de cópia disponibiliza os dados que estão sendo movidos em uma tabela temporária com esse tipo de tabela. O código de procedimento armazenado pode mesclar os dados que estão sendo copiados com os dados existentes. | < o nome do tipo de tabela > | Não | sqlWriterTableType |
Nome do parâmetro do tipo de tabela | O nome do parâmetro do tipo de tabela especificado no procedimento armazenado. | < o nome do parâmetro do tipo de tabela > | Não | storedProcedureTableTypeParameterName |
Parâmetros | Parâmetros para o procedimento armazenado. Os valores permitidos são pares de nome e valor. Os nomes e o invólucro dos parâmetros devem corresponder aos nomes e invólucros dos parâmetros do procedimento armazenado. | < Pares de nome e valor > | Não | 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 (padrão) | Não | sqlWriterUseTableLock: true ou false (padrão) |
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 pré-carregados. | < script de pré-cópia > (string) |
Não | pré-CopyScript |
Tempo limite de gravação em lote | O tempo de espera para que a operação de inserção de lote termine antes que ela atinja o tempo limite. | timespan (o padrão é "02:00:00") |
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 de 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 quiser limitar conexões simultâneas. | < limite superior de conexões simultâneas > (inteiro) |
Não | maxConcurrentConnections |