Esta página contém informações sobre:
- O comportamento de como o Datastream lida com dados que estão sendo extraídos de um banco de dados do SQL Server de origem.
- Os métodos de captura de dados alterados (CDC) com suporte do Datastream.
- As versões de bancos de dados do SQL Server com suporte do Datastream.
- Limitações conhecidas para o uso do banco de dados do SQL Server como fonte.
Comportamento
O Datastream rastreia as mudanças na linguagem de manipulação de dados (DML) usando um dos seguintes métodos de CDC:
Alterar tabelas
O método CDC de alteração de tabelas permite que os usuários retenham registros por um período mais curto e, assim, economizem espaço de armazenamento, mas oferece suporte a uma capacidade de processamento menor em comparação com o método de registros de transações. O método tem menos limitações do que os registros de transações. Por exemplo, ele elimina o risco de truncamento de registros que leva a falhas permanentes nos streams e oferece suporte à replicação de tabelas criptografadas. Para mais informações, consulte Limitações conhecidas.
Ao usar esse método de CDC, as mudanças na origem são rastreadas usando tabelas de mudanças dedicadas. Os registros de transações ainda são usados, mas em extensão limitada, e não é necessário mantê-los por períodos mais longos. À medida que os eventos DML são aplicados às tabelas de origem, as mudanças são replicadas nas tabelas de mudanças correspondentes. As tabelas de mudanças têm a mesma estrutura das tabelas de origem, mas com colunas extras para incluir os metadados das mudanças. Somente as transações confirmadas são adicionadas às tabelas de mudanças, juntamente com o número de sequência do registro (LSN) da operação de confirmação.
Se uma nova instância de captura for criada após o início do stream, o Datastream não vai mudar automaticamente para ela. Se a instância de captura selecionada for excluída, o Datastream vai pular a leitura da tabela de mudanças correspondente.Como o Datastream lida com mudanças de DDL no esquema de origem
Ao usar o método CDC de alteração de tabelas, as instâncias de captura são criadas para cada tabela de mudanças. Cada instância de captura está associada a uma lista de colunas que ela captura e rastreia. Por padrão, quando uma mudança na linguagem de definição de dados (DDL) acontece na origem após a criação da instância de captura, a instância ignora a mudança. No entanto, é possível configurar o stream do SQL Server para replicar colunas adicionadas ao esquema de origem após a criação do stream e da instância de captura.
Antes de começar
- Verifique se o usuário do Datastream tem a permissão
db_owneratribuída.
Replicar colunas adicionadas ao esquema de origem
Para que o Datastream ofereça suporte à replicação de colunas adicionadas ao esquema de origem após a criação de um stream, adicione o rótulo enable_ddl_support_for_ct ao stream:
Acesse a página Streams no Google Cloud console.
Clique no stream do SQL Server que você quer editar.
Na página Detalhes dos streams, clique em Pausar.
Clique em Editar > Editar configurações do stream.
Clique em Adicionar rótulo.
No campo Chave, digite
enable_ddl_support_for_ct.No campo Valor, digite
true.Clique em Salvar.
Clique em Iniciar para retomar o stream.
O Datastream verifica a
cdc.ddl_history
tabela para novas DDLs a cada cinco minutos. Se uma nova coluna for adicionada a uma tabela incluída na configuração do stream, o Datastream vai verificar se a tabela tem duas instâncias de captura:
Se não tiver, o Datastream vai criar uma nova instância de captura, ler os dados da instância de captura original até o momento em que a DDL aconteceu e, em seguida, começar a ler da nova instância de captura.
Se houver, uma entrada de registro será adicionada informando que a mudança de DDL não pode ser processada porque o número máximo de instâncias de captura foi atingido.
Registros de transações
Ao usar esse método de CDC, o Datastream lê as mudanças na origem diretamente dos registros de transações. Esse método exige menos recursos e permite uma recuperação de dados mais rápida, mas tem mais limitações.
Para evitar a perda de dados, é importante que os registros não sejam truncados antes de serem lidos pelo Datastream. Por outro lado, se você mantiver os arquivos de registro por muito tempo, eles vão ocupar espaço de armazenamento, o que pode fazer com que a instância do banco de dados entre no modo somente leitura.
Para garantir que o leitor de CDC tenha tempo suficiente para ler os registros, permitindo o truncamento de registros para liberar espaço de armazenamento, é necessário aplicar etapas de configuração adicionais, como mudar os intervalos de pesquisa e configurar uma proteção de truncamento. Essas etapas fornecem uma camada extra de proteção para garantir que o Datastream possa ler os dados mesmo que haja tempo de inatividade no lado do Datastream ou um problema de conectividade entre o banco de dados de origem e o Datastream.
Para instruções detalhadas sobre como aplicar essas medidas adicionais, consulte a página Configurar um banco de dados do SQL Server de origem e selecione o tipo de banco de dados.
Versões
O Datastream oferece suporte às seguintes versões e edições de bancos de dados do SQL Server:
- Gerenciado por conta própria (no local ou hospedado na nuvem) usando as seguintes versões:
- Enterprise: 2008 e versões mais recentes
- Standard: 2016 SP1 e versões mais recentes
- Developer: 2008 e versões mais recentes
- Amazon RDS para SQL Server
Banco de Dados SQL do Azure (camada S3 e acima)
Cloud SQL para SQL Server
O Datastream não oferece suporte às seguintes versões de bancos de dados do SQL Server:
- SQL Server Standard Edition da versão 2008 à 2014
- SQL Server Express
- SQL Server Web
Limitações conhecidas
Limitações conhecidas para o uso do banco de dados do SQL Server como fonte incluem:
- Os streams são limitados a 10.000 tabelas.
- Uma tabela com mais de 500 milhões de linhas não pode ser preenchida, a menos que as seguintes condições sejam atendidas:
- A tabela tem um índice exclusivo.
- Nenhuma das colunas de índice é anulável.
- Todas as colunas do índice estão incluídas no stream.
- Não há suporte para bancos de dados com durabilidade atrasada ou recuperação de banco de dados acelerada (ADR) ativada.
- Não há suporte para mudanças de streaming em tabelas do sistema.
- Não há suporte para a autenticação do Windows Active Directory (AD).
O Datastream oferece suporte a todas as ordenações do SQL Server, exceto aquelas com a página de código
0. Para verificar a página de código de uma ordenação específica, execute a seguinte consulta na instância do SQL Server:SELECT *, CAST(COLLATIONPROPERTY(name, 'CodePage') AS INT) FROMsys.fn_helpcollations() WHERE name = COLLATION_NAME; Os seguintes tipos de dados não são compatíveis e não são replicados para o destino:
SQL_VARIANTHIERARCHYIDGEOMETRYGEOGRAPHY
O Datastream replica tipos de dados definidos pelo usuário, mas é o tipo de dados de base do qual você deriva o tipo definido pelo usuário que é armazenado no destino. Por exemplo, se você definir um tipo de dados
USERNAMEcom base no tipo de dadosVARCHAR(50), os dados serão armazenados no destino comoVARCHAR(50).O Datastream não oferece suporte à CDC para colunas de objetos grandes (
TEXT,NTEXT,XML,IMAGE) e colunas de comprimento variável máximo (VARCHAR(MAX),VARBINARY(MAX),NVARCHAR(MAX)) em tabelas sem um índice exclusivo.Se colunas de objetos grandes não estiverem incluídas no stream, a CDC será compatível.
Não há suporte para a replicação das seguintes mudanças de esquema de origem ao usar o método CDC de alteração de tabelas, o que pode causar corrupção de dados ou falha no processamento de eventos:
- Colunas de descarte: os dados nessas colunas são substituídos por valores
NULL. - Renomear colunas: não há suporte para o SQL Server quando a CDC está ativada.
Modificar tipos de dados: o job de captura de CDC do SQL Server propaga apenas as seguintes mudanças de tipo de dados:
- Mudança do comprimento máximo de strings: por exemplo, mudar o tipo de dados
VARCHAR(50)paraVARCHAR(100). A colunaSTRINGdo BigQuery não tem um comprimento fixo e aceita a string mais longa. - Aumento do intervalo de valores inteiros: por exemplo, mudar o
INTtipo de dados paraBIGINT. O tipo de dadosINT64do BigQuery acomoda o novo tipo sem exigir uma mudança de esquema. - Mudança da precisão e da escala de valores numéricos: por exemplo, mudar o tipo de dados
DECIMAL(10, 2)paraDECIMAL(18, 4). O tipoNUMERICdo BigQuery tem uma grande precisão fixa (38) e escala (9), e essa mudança é compatível.
Para outras modificações de tipo de dados, o Datastream tenta inserir os dados no destino e gera um erro se os dados forem rejeitados.
- Mudança do comprimento máximo de strings: por exemplo, mudar o tipo de dados
- Colunas de descarte: os dados nessas colunas são substituídos por valores
O Datastream não oferece suporte à replicação de tabelas que incluem colunas com mascaramento de dados. Os dados são replicados sem mascaramento.
O Datastream não oferece suporte à replicação de mudanças aplicadas ao banco de dados usando o pacote de aplicativos da camada de dados (DACPAC).
O Datastream não replica as mudanças feitas usando as instruções
WRITETEXTouUPDATETEXT.Se você usar o rótulo
enable_ddl_support_for_ctpara replicar colunas adicionadas ao esquema de origem, não será possível ter vários streams anexados à mesma tabela de origem do SQL Server. Como o SQL Server oferece suporte a um máximo de duas instâncias de captura por tabela, as mudanças de esquema podem causar condições de corrida em que o Datastream tenta criar instâncias de captura, o que pode causar falhas nos streams.O Datastream não oferece suporte à replicação de colunas calculadas, a menos que a coluna esteja marcada como
PERSISTED.O Datastream não oferece suporte aos tipos de compactação
PAGE,COLUMNSTOREouCOLUMNSTORE ARCHIVE.
Limitações adicionais ao usar o método de registros de transações
Se você usar o método CDC de registros de transações, as seguintes limitações adicionais serão aplicadas:
- Não há suporte para a Criptografia transparente de dados (TDE).
- Não há suporte para a criptografia no nível da coluna. Os dados nessas colunas são substituídos por valores
NULL. - Ao usar o método CDC de registros de transações, o Datastream não oferece suporte à replicação de colunas adicionadas ao esquema de origem após a criação de um stream. As novas colunas não são replicadas para o destino.
- O Datastream não oferece suporte à instrução
ROLLBACK TO SAVEPOINT. Esses eventos de reversão são ignorados e não são replicados para o destino. - O Datastream não oferece suporte à CDC para linhas maiores que 8 KB nos seguintes tipos de tabelas:
- Tabelas sem um índice exclusivo
- Tabelas que contêm apenas um índice exclusivo não clusterizado com uma ou mais
colunas de comprimento variável (
VARCHAR,VARBINARY,NVARCHAR)
O Datastream não oferece suporte à CDC para colunas de objetos grandes (
TEXT,NTEXT,XML,IMAGE) nos seguintes tipos de tabelas:- Tabelas sem um índice exclusivo
- Tabelas que contêm apenas um índice exclusivo não clusterizado com uma ou mais
colunas de comprimento variável (
VARCHAR,VARBINARY,NVARCHAR)
Se colunas de objetos grandes não estiverem incluídas no stream, a CDC só será compatível com essas tabelas se elas tiverem índices válidos.
A seguir
- Saiba como configurar uma fonte do SQL Server para uso com o Datastream.