Configurar o Amazon RDS para SQL Server em uma atividade de cópia

Este artigo descreve como usar a atividade de cópia em um pipeline para copiar dados do Amazon RDS para SQL Server.

Configuração com suporte

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

Geral

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

Origem

As seguintes propriedades têm suporte para o Amazon RDS para SQL Server na guia Origem de uma atividade de cópia.

As seguintes propriedades são necessárias:

  • Conexão: selecione uma conexão do Amazon RDS para SQL Server na lista de conexões. Se a conexão não existir, crie uma nova conexão do Amazon RDS para SQL Server selecionando Novo.

  • Tipo de conexão: selecione Amazon RDS para SQL Server.

  • Usar consulta: especifique a maneira de fazer a leitura dos dados. Você poderá escolher Tabela, Consulta ou Procedimento armazenado. A lista a seguir descreve a configuração de cada definição:

    • Tabela: Leia os dados da tabela especificada. Selecione a tabela de origem na lista suspensa ou selecione Editar para inseri-la manualmente.

    • 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 as configurações de 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 selecionar 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 a capitalização de parâmetros devem corresponder aos nomes e à capitalização dos parâmetros do procedimento armazenado. Selecione Importar parâmetros para obter os parâmetros de procedimento armazenado.

        Captura de tela mostrando as configurações 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 timespan, 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 Read committed, Read uncommitted, Repeatable read, Serializable ou Snapshot. 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.

    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 Amazon RDS para SQL Server. 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 é Nenhum), o grau de paralelismo para carregar dados simultaneamente do Amazon RDS para SQL Server é controlado pelo Grau de paralelismo de cópia na guia de configurações da atividade de cópia.

    • 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 for especificado, o índice ou a chave primária da tabela será auto-detectado e usado como 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 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 serão particionadas e copiadas. Se não for especificado, a atividade de cópia 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 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 serão particionadas e copiadas. Se não for especificado, a atividade de cópia detectará o valor automaticamente. Para ver um exemplo, confira 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 o segundo.

Observe os seguintes pontos:

  • Se a Consulta for especificada para a fonte, a atividade Copy executará essa consulta na fonte do Amazon RDS para SQL Server para obter os dados. Também poderá especificar um procedimento armazenado especificando o Nome do procedimento armazenado e os Parâmetros do procedimento armazenado se o procedimento armazenado usar parâmetros.
  • ao usar um procedimento armazenado na origem para recuperar dados, observe que, se o procedimento armazenado for projetado para retornar um esquema diferente quando um valor de parâmetro diferente for passado, você poderá ter uma falha ou um resultado inesperado ao importar o esquema da interface do usuário ou ao copiar dados para o banco de dados SQL com a criação automática de tabela.

Mapeamento

Para Configuração da guia Mapeamento, acesseConfigurar seus mapeamentos na guia mapeamento.

Configurações

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

Mapeamento de tipo de dados para o Amazon RDS para SQL Server

Ao copiar dados do Amazon RDS para SQL Server, os seguintes mapeamentos são usados dos tipos de dados do Amazon RDS para SQL Server para tipos de dados provisórios usados pelo serviço internamente.

Tipo de dados do Amazon RDS para SQL Server Tipo de dados provisório do serviço
bigint Int64
binário Byte[]
bit booleano
char Fio, Queimado[]
date DateTime
Data e hora DateTime
datetime2 DateTime
Datetimeoffset DateTimeOffset
Decimal Decimal
Atributo FILESTREAM (varbinary(max)) Byte[]
Flutuar Double
imagem Byte[]
int Int32
dinheiro Decimal
NCHAR Fio, Queimado[]
ntext Fio, Queimado[]
numérico Decimal
NVARCHAR Fio, Queimado[]
real Solteiro
rowversion Byte[]
smalldatetime DateTime
smallint Int16
pequena quantia de dinheiro Decimal
sql_variant Object
enviar SMS Fio, Queimado[]
time TimeSpan
carimbo de data/hora Byte[]
tinyint Int16
uniqueidentifier Guid
varbinary Byte[]
varchar Fio, Queimado[]
Xml String

Observação

Para tipos de dados que mapeiam para o tipo provisório decimal, no momento, a atividade Copy dá suporte à precisão de até 28. Se você tiver dados que exijam precisão maior que 28, considere converter para uma cadeia de caracteres em uma consulta SQL.

Ao copiar dados do Amazon RDS para SQL Server usando o Fabric Data Factory, o tipo de dado bit é mapeado para o tipo de dado intermediário booleano. Se você tiver dados que precisam ser mantidos no tipo de dados bit, use consultas com T-SQL CAST ou CONVERT.

Cópia paralela do banco de dados SQL

O conector do Amazon RDS para 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 com relação à sua fonte do Amazon RDS para 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 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 Amazon RDS para SQL Server.

É recomendável habilitar a cópia paralela com o particionamento de dados, especialmente quando você carrega grandes quantidades de dados do banco de dados do Amazon RDS para SQL Server. 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
Carga completa 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 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 MÍN e MÁX. É recomendável fornecer o limite superior e o limite inferior.

Por exemplo, se a coluna de partição "ID" 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 através de 4 partições: IDs no intervalo <=20, [21, 50], [51, 80], e >=81, respectivamente.
Carregue uma quantidade significativa de dados usando uma consulta personalizada, sem a necessidade de partições físicas, e com uma coluna de inteiro ou data/datetime para o particionamento dos 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 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 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:

  1. Escolha a coluna distinta como coluna de partição (como chave primária ou chave exclusiva) para evitar a distorção de dados.
  2. 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.

Captura de tela do resultado da consulta SQL.

Resumo da tabela

Consulte a tabela a seguir para obter o resumo e mais informações sobre a atividade de cópia do Amazon RDS para o SQL Server.

Informações de origem

Nome Descrição Valor 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
Tipo de conexão Seu tipo de conexão. Selecione Amazon RDS para SQL Server. Amazon RDS para SQL Server Yes /
Usar consulta A consulta SQL personalizada para ler os dados. • Tabela
• Consulta
• Procedimento armazenado
Yes /
Tabela Sua tabela de dados de origem. < nome da tabela de destino> Não esquema
tabela
Consulta A consulta SQL personalizada para ler os dados. < sua consulta > Não sqlReaderQuery
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 sqlReaderStoredProcedureName
Parâmetro de procedimento armazenado Esses parâmetros são para o procedimento armazenado. Valores permitidos são pares de nome ou valor. Os nomes e a capitalização de parâmetros devem corresponder aos nomes e à capitalização dos parâmetros do procedimento armazenado. < pares de nome ou valor > Não parâmetrosProcedimentoArmazenado
Tempo-limite da consulta O tempo limite para a execução do comando de consulta. intervalo de tempo
(o padrão é 120 minutos)
Não queryTimeout
Nível de Isolamento Especifica o comportamento de bloqueio de transações para a fonte SQL. • Leitura confirmada
• Leitura não confirmada
• Leitura repetida
• Serializável
•Instantâneo
Não isolationLevel:
• ReadCommitted
• ReadUncommitted (Leitura Não Confirmada)
•Repeatableread
• Serializável
•Instantâneo
Opção de partição As opções de particionamento usadas para carregar dados do Amazon RDS para SQL Server. • Nenhum (padrão)
• Partições físicas da tabela
• Intervalo dinâmico
Não opçãoDePartição
• Nenhum (padrão)
• PartiçõesFísicasDaTabela
• DynamicRange
Nome da coluna de partição O nome da coluna de origem no tipo inteiro ou data/datetime (int, smallint, bigint, date, smalldatetime, datetime, datetime2 ou datetimeoffset) que é usado pelo particionamento de intervalo para cópia em paralelo. Se não for especificado, o índice ou a chave primária da tabela será auto-detectado e usado como coluna de partição. Se você usar uma consulta para recuperar os dados de origem, conecte ?DfDynamicRangePartitionCondition na cláusula WHERE. < nomes das colunas 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 stride da partição, e não para filtrar as linhas na tabela. Todas as linhas da tabela ou do resultado da consulta serão particionadas e copiadas. Se não for especificado, a atividade de cópia detectará o valor automaticamente. < limite superior da sua partição> Não limiteSuperiorDePartiçã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 stride da partição, e não para filtrar as linhas na tabela. Todas as linhas da tabela ou do resultado da consulta serão particionadas e copiadas. Se não for especificado, a atividade de cópia detectará o valor automaticamente. < limite inferior da partição > Não partitionLowerBound
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 o segundo. • Nome
• Valor
Não colunas adicionais
• nome
• valor