Migrar de Caché e IRIS para SQL Server: o que muda no destino
Se a tabela não existe no SQL Server, o dbSlice para e mostra um CREATE TABLE traduzido para o SQL Server, para o seu DBA revisar e rodar. Por padrão, ele não cria nada nos seus bancos. Estes são os detalhes do InterSystems para planejar:
- Nenhum driver ODBC para instalar. O dbSlice tem um conector para o IRIS e outro para o Caché legado, e lê o dicionário de classes nas versões mais antigas do Caché.
- O mesmo nome de tabela em vários esquemas. Sistemas InterSystems costumam repetir um nome de tabela em vários pacotes. Escolha o esquema da tabela que você quer; o dbSlice lista as colunas desse esquema.
- Tamanhos de
VARCHAR. Um%Stringdo Caché costuma ser declarado com tamanho curto, como o padrão de 50, e chega comoNVARCHAR(50). O Caché não impõe o tamanho declarado aos dados gravados por ObjectScript; então alguns valores podem ser maiores, e o SQL Server os rejeita com "String or binary data would be truncated". Confira os maiores valores e alargue as colunas antes de rodar oCREATE TABLE. - Propriedades stream. Streams de caracteres (
LONGVARCHAR) viramNVARCHAR(MAX)e streams binários (LONGVARBINARY) viramVARBINARY(MAX). - Datas guardadas como número. Classes legadas às vezes guardam datas como inteiros (
20261102ou um Unix time). Quando a coluna no SQL Server éDATEouDATETIME2, o dbSlice as converte no caminho. NUMERIC(p,s)mantém precisão e escala emDECIMAL, até o limite de 38 dígitos do SQL Server.- Ids. Os row ids do InterSystems (
%ID, e os idsparent||childdas tabelas filhas) muitas vezes não aparecem como colunas comuns. Use a chave da própria tabela. Se a chave no SQL Server for uma colunaIDENTITY, ligue Keep identity, que exige permissão de ALTER e é confirmado na tela antes. - O Upsert roda como
MERGEe as cargas em massa usamSqlBulkCopy, com triggers e constraints verificados.

Como o dbSlice controla a carga a partir do Caché e do IRIS
- Lê em lotes pequenos, ordenados pela chave, para o sistema antigo continuar atendendo os usuários.
- Tabelas com chave de várias colunas: acrescente as colunas extras em Tie-break columns. O dbSlice passa a paginar pela chave completa, e não só pela primeira coluna. Uma execução com tie-break columns não retoma do meio.
- Tabelas sem índice utilizável: ligue Read without ordering. O dbSlice abre um cursor sem
ORDER BYe o divide em lotes ele mesmo, em vez de pedir ao servidor para ordenar a tabela a cada lote. Essa execução também não retoma do meio. - Tabelas muito grandes: ligue Don't count rows before starting para pular o
COUNT(*)antes da cópia. - Confere antes de gravar com o Record Diff e as conferências na tela, e prova o resultado com o Compare e a lista completa de chaves divergentes.
- Mascara no caminho as cópias de desenvolvimento e teste, mantendo chaves e chaves estrangeiras intactas.
- Exportar em vez de carregar: quando você só precisa de um arquivo, o mesmo app exporta uma tabela do Caché ou do IRIS para CSV, JSON, XML ou HTML.
Passo a passo: converter uma tabela de Caché ou IRIS para SQL Server
- Conecte no Caché ou no IRIS (servidor, porta, namespace, usuário) e no SQL Server.
- Escolha o esquema e a tabela de origem (ou um SELECT), e a tabela de destino.
- Escolha a coluna-chave. Se a chave tiver várias colunas, acrescente as outras em Tie-break columns. Se a tabela não tiver índice utilizável, marque Read without ordering.
- Escolha o modo: Initial load, depois Upsert ou Insert new.
- Rode o Record Diff e depois a cópia, ou salve como job para a CLI e o Agendador de Tarefas do Windows.
Mover dados entre Caché, IRIS e SQL Server, com qualquer um deles como origem
O dbSlice também grava no IRIS e no Caché, então a mesma tela carrega dados do SQL Server no IRIS. Com o PostgreSQL como destino, veja Caché e IRIS para PostgreSQL.
Perguntas frequentes
O dbSlice converte classes, rotinas ou triggers em ObjectScript?
Não. Ele move dados; o código precisa ser reescrito em T-SQL ou na nova aplicação.
Ele lê dados que existem só em globals?
Não. O dbSlice lê pelo SQL do InterSystems. Mapeie as globals para uma classe antes.
Quais versões?
InterSystems IRIS e o Caché legado, inclusive servidores sem INFORMATION_SCHEMA.
As execuções incrementais copiam as exclusões?
Não. Rode o Compare ou uma recarga antes da troca.
Existe versão gratuita?
Sim, na Microsoft Store: ela conecta, navega, compara e exporta para CSV. Gravar num destino exige uma licença Desktop ou Server.