Páginas filhas
  • Migração dos tipos de dados TEXT,NTEXT e IMAGE nas colunas em SQL Server

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

01. VISÃO GERAL

Este documento detalha apresenta como será aplicado realizada a migração dos tipos de dados text, ntext e image nas colunas no do banco de dados, macados . Esses tipos foram marcados pela Microsoft como obsoletos pela Microsoft e que serão removidos e estão em processo de descontinuação, com remoção prevista em versões futuras do SQL Server. Para apoiar esse processo, a Microsoft já disponibiliza diretrizes oficiais que recomendam a substituição por tipos mais modernos e compatíveis, como varchar(max), nvarchar(max) e varbinary(max), assegurando melhor desempenho, suporte contínuo e maior compatibilidade futura.

Informações

Mais informações técnicas a respeito destes tipos de dados descontinuados no site do fabricante:  https://learn.microsoft.com/pt-br/sql/t-sql/data-types/ntext-text-and-image-transact-sql?view=sql-server-ver16

02. DETALHAMENTO DA MIGRAÇÃO

A partir da versão 12.1.2510 o RM.Atualizador irá modificar as colunas das tabelas que utilzam os tipos de dados text, ntext e image para varchar(max), nvarchar(max) varbinary(max) respectivamente.

A migração será realizada através de uma action que será apresentada na última etapa no passo de execução do RM Atualizador.

Durante a atualização a action irá  registrar o log de conversão dos tipos dos dados em uma tabela interna do sistema, detalhando em caso de falha qual foi o motivo da falha. 

Como ainda temos produtos que utiliazm executáveis Delphi, algumas tabelas não serão migradas neste momento,

...


Com o objetivo de apoiar o processo de atualização do cliente, nossa ferramenta apresentará uma etapa dedicada à migração automática de todas as colunas de negócio existentes no banco de dados da linha RM que ainda utilizam os datatypes legados.
Essa etapa foi planejada para reduzir riscos e acelerar a adequação da estrutura, alinhando-se às melhores práticas já recomendadas pela Microsoft.

Benefícios da migração

    • Compatibilidade futura: uso de datatypes plenamente suportados nas versões mais recentes do SQL Server.

    • Melhoria de performance: consultas e operações passam a ter ganhos de desempenho em cenários de leitura e escrita.

    • Facilidade de manutenção: uso de tipos modernos simplifica scripts, integrações e ajustes futuros.

    • Confiabilidade: elimina riscos relacionados ao uso de tipos obsoletos, que podem deixar de ser suportados em releases futuras.

Redução do tempo de migração

Para potencializar os benefícios, reforçamos a importância de reduzir o conteúdo das principais tabelas mais volumosas antes da execução do processo de migração.
Ao diminuir a quantidade de dados armazenados, o tempo necessário para converter os datatypes pode ser significativamente reduzido, resultando também em menor tempo destinado à atualização da base de dados como um todo.

Nossa ferramenta já disponibiliza documentações de apoio para auxiliar na redução do conteúdo das tabelas e otimizar o processo. Recomendamos que o cliente utilize essas orientações previamente, de forma a garantir que a migração seja mais ágil, segura e com menor impacto para os usuários:

Dica
titleLimpeza de tabelas

Segue o link com documentação para auxiliar na redução de dados nas principais tabelas do produto: https://tdn.totvs.com/x/KmTeO


02. DETALHAMENTO DA MIGRAÇÃO

A migração será realizada por meio de um item disponível na última etapa do processo de execução do RM Atualizador, conforme ilustrado abaixo.

Durante a atualização, será gerado um log em uma tabela interna do sistema, registrando o processo de conversão dos tipos de dados e, em caso de falhas, detalhando o respectivo motivo.

Para consultar as colunas que serão migradas, execute a instrução SQL apresentada a seguir:

Bloco de código
languagesql
collapsetrue
SELECT SCHEMA_NAME(C.SCHEMA_ID) ESQUEMA, 
       OBJECT_NAME(A.OBJECT_ID) TABELA, A.NAME COLUNA, B.NAME TIPO, 
       CASE WHEN B.NAME = 'IMAGE' THEN 'VARBINARY(MAX)' 
            WHEN B.NAME = 'NTEXT' THEN 'NVARCHAR(MAX)'
            WHEN B.NAME = 'TEXT' THEN 'VARCHAR(MAX)'
       END NOVOTIPO,
       CASE WHEN B.IS_NULLABLE = 0 THEN 'NOT NULL' ELSE '' END PERMITENULO
FROM SYS.COLUMNS A JOIN SYS.TYPES B 
       ON A.SYSTEM_TYPE_ID = B.SYSTEM_TYPE_ID
     JOIN SYS.TABLES C ON C.OBJECT_ID = A.OBJECT_ID
          AND SCHEMA_NAME(C.SCHEMA_ID) IN ('DBO','TOTVSAUDIT')
              AND OBJECT_NAME(A.OBJECT_ID) NOT IN (SELECT * FROM ( VALUES ('DHISTITEM'),('DHISTLAF'),('DHISTNATUREZA'),('DLDC'),('DNORMAREFERENCIADA'),
	               ('DPERIODO'),('DRELATORIO'),('GCONSSQL'),('GFORMULA'),('RCAMREL'),('RRELAT'),('TPAR'),('TPRDHISTORICO'),('GFILTROS'),
	               ('GIMAGEM'),('GJOBLOG'),('GJOBQUEUE'),('GJSJOBS'),('GJSLOGS'),('GJSPARAMETERS'),('GLBCONCEITOSIMPORTACAO'),('GMAILFILA'),
	               ('GMAILSEND'),('GMAILSENDATTACH'),('GPARTSUSRPARTPARAM'),('GUSRPAR'),('GVALDEFAULT'),('RIMGREL'),('RRELTIP') ) LISTAEXCLUDE (TABELAS))
          AND OBJECT_NAME(A.OBJECT_ID) COLLATE SQL_LATIN1_GENERAL_CP1_CI_AI IN ( SELECT TABELA COLLATE SQL_LATIN1_GENERAL_CP1_CI_AI FROM GDIC (NOLOCK))
          AND B.NAME IN  ('TEXT', 'NTEXT', 'IMAGE') 
ORDER BY OBJECT_NAME(A.OBJECT_ID), A.NAME

...

3. TELA RM ATUALIZADOR

No RM Atualizador haverá uma etapa dedicada a migração será apresentada conforme a imagem abaixo e o usuário poderá escolher as tabelas que serão migradas.apresentar ao usuário as tabelas envolvidas na migração, organizadas conforme o tamanho em disco. O objetivo é incentivar a análise da possibilidade de reduzir o conteúdo dessas tabelas antes de submetê-las à migração, o que pode, consequentemente, diminuir o tempo necessário para a atualização da base de dados:


Image Modified


Em seguida, é apresentada a Action de Migraçãolista de versões, juntamente com o item responsável pela migração, conforme ilustrado:

Image Modified