Base de conhecimento
Encontre respostas para suas dúvidas em quatro fontes de conhecimento diferentes ao mesmo tempo, simplificando o processo de pesquisa.

Framework - Framework RM - BD - Migração dos tipos de dados TEXT, NTEXT e IMAGE nas colunas em SQL Server

junho15:55.

time.png Tempo aproximado para leitura: 00:04:00 min

Dúvida

Como funciona o processo de migração automática dos tipos de dados TEXT, NTEXT e IMAGE para as novas estruturas do SQL Server utilizando o RM Atualizador a partir da release 12.1.2606?

Ambiente

Framework - Framework (Linha RM) - Banco de Dados - Versão 12.1.2606

Solução

Este documento apresenta como será realizada a migração dos tipos de dados textntext e image nas colunas do banco de dados. Esses tipos foram marcados pela Microsoft como obsoletos 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.

Mais informações técnicas a respeito destes tipos de dados descontinuados no site do fabricante:  ntext, text e image (Transact-SQL)

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.

 

(ideia) Foi criado um requisito que identifica bases contendo tabelas com grandes volumes de dados, as quais podem ocasionar demora na migração dos tipos de dados em suas colunas. Caso o RM.Atualizador sinalize este requisito, significa que uma ou mais tabelas do seu banco de dados podem gerar lentidão durante a etapa de atualização. Abaixo disponibilizamos um modelo de consulta SQL para auxiliá-lo na identificação das tabelas que necessitam ser saneadas:

SQL

 
WITH cte_sizes AS (
    SELECT 
        P.OBJECT_ID, 
        OBJECT_NAME(P.OBJECT_ID) AS NOME,
        CAST((SUM(a.total_pages) * 8.0) / 1024 AS DECIMAL (18,2)) AS TotalSizeMB
    FROM sys.partitions p 
    JOIN sys.allocation_units a ON p.partition_id = a.container_id
    GROUP BY P.OBJECT_ID
),
cte_rows AS (
    SELECT 
        OBJECT_ID, 
        SUM(row_count) AS NumeroLinhas
    FROM sys.dm_db_partition_stats
    WHERE Index_id IN (0,1) 
    GROUP BY OBJECT_ID
)
SELECT DISTINCT 
    SCHEMA_NAME(c.schema_id) AS Esquema, 
    OBJECT_NAME(a.object_id) AS Tabela,
    d.TotalSizeMB AS Tamanho, 
    ISNULL(n.NumeroLinhas, 0) AS Linhas
FROM sys.columns a
JOIN sys.types b ON a.system_type_id = b.system_type_id
    AND b.name IN (SELECT * FROM (VALUES ('text'), ('image')) tipos (nomes))
JOIN sys.tables c ON c.object_id = a.object_id
    AND c.schema_id IN (SELECT * FROM (VALUES (schema_id('dbo'))) esquemas (nomes))
JOIN cte_sizes d ON a.object_id = d.OBJECT_ID
LEFT JOIN cte_rows n ON a.object_id = n.OBJECT_ID
ORDER BY d.TotalSizeMB DESC;

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:

Redução de dados nas tabelas::

Caso as tabelas que sejam migradas estejam com alto número de registros e densidade de informações, o tempo de migração do tipo de dados será maior. Segue o link com documentação para auxiliar na redução de dados nas principais tabelas do produto: https://tdn.totvs.com/x/KmTeO

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:

 

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) 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

 

TELA RM ATUALIZADOR

No RM Atualizador, haverá uma etapa dedicada a 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:

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


 

Saiba Mais

 

Esse artigo foi útil?
Usuários que acharam isso útil: 0 de 0

0 Comentários

Por favor, entre para comentar.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Preencha os campos abaixo para iniciar o atendimento:

Chat _