---
sourceDocument: Yokohama Administração da Now Platform
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/pt-BR/yokohama/platform-administration

 Release :

    - yokohama

ft:locale :

    - pt-BR

ft:publication_title :

    - Yokohama Administração da Now Platform

ft:clusterId :

    - platadm

bundleId :

    - platadm

workflow :

    - Platform


---

# Migrando campos não referência para campos de referência

# Migrando campos não referência para campos de referência {#ariaid-title1}

* Versão de lançamento: Yokohama
* 
* Atualizado 30 de jan. de 2025
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 2 min. de leitura

Preserve manualmente sys_ids nos campos de referência em vez de armazenar o nome de exibição como uma cadeia de caracteres.

## Determinando tabelas a serem migradas {#archive-reference-migration__section_kyq_cjq_xcc}

Para iniciar o processo de migração de dados, execute o script em segundo plano a seguir. Este script cria registros de migração para extensões de tabela direta e registros arquivados relacionados na tabela Migração de referência de regra de arquivamento \[sys_archive_ref_migration\], garantindo que somente tabelas válidas sejam processadas.

    var tables = GlideDBObjectManager.get().getAllExtensions(current.table);
        for (i = 0; i < tables.size(); i++) {
            var gr = new GlideRecord('sys_archive_ref_migration');
            gr.addQuery('table', 'ar_' + tables.get(i));
            gr.query();
            if (!gr.next()) {
                if (GlideTableDescriptor.isValid('ar_' + tables.get(i))) {
                    var gr2 = new GlideRecord("sys_archive_ref_migration");
                    gr2.initialize();
                    gr2.setValue('rule', current.sys_id);
                    gr2.setValue('table', 'ar_' + tables.get(i));
                    gr2.setValue('reference_migration_progress', 'waiting');
                    gr2.insert();
                }
            }
        }
        //Also get insert related records tables as well
        var map = new GlideRecord('sys_archive');
        map.addQuery('table', current.table);
        map.query();
        if (map.next()) {
            var id = map.getValue('sys_id');
            if (!(id === undefined)) {
                var related = new GlideRecord('sys_archive_related');
                related.addQuery('archive_map', id);
                related.addQuery('action', 'archive');
                related.query();
                while (related.next()) {
                    if (!GlideTableDescriptor.isValid('ar_' + related.getValue('table'))) {
                        gs.log('Related Record table: ' + related.getValue('table') + ' not created yet');
                        continue;
                    }
     
                    var gr3 = new GlideRecord("sys_archive_ref_migration");
                    gr3.initialize();
                    gr3.setValue('rule', current.sys_id);
                    gr3.setValue('table', 'ar_' + related.getValue('table'));
                    gr3.setValue('reference_migration_progress', 'waiting');
                    gr3.insert();
                }
            }
        }

## Copiando referências de arquivamento {#archive-reference-migration__section_jw3_txq_vnb}

Para cada tabela que passa pelo processo de migração, o trabalho Cópia de referência de arquivamento (RefCopyJob) identifica o sys_id dos campos de referência e atualiza o valor de exibição para ser o sys_id correto. O trabalho configura 10.000 registros por vez, a menos que haja mais de 10.000 registros com o mesmo carimbo de data/hora. O andamento da migração depende do carimbo de data/hora arquivado.

## Alterando os tipos de campo de cadeia de caracteres para referência {#archive-reference-migration__section_mld_fcr_vnb}

Depois que as tabelas associadas a uma regra de arquivamento migrarem completamente, o trabalho ArchiveRefJob será executado. Este trabalho muda os tipos sys_dictionary da tabela de arquivamento de cadeia de caracteres para referência.

## Corrigindo falhas de nó para RefCopyJob e ArchiveRefJob {#archive-reference-migration__section_mv3_bdr_vnb}

Se ocorrer uma falha de nó enquanto esses trabalhos estiverem em execução, o status da migração de dados ficará em um estado inadequado. . RefCopyJobfalha, ele pode deixar uma tabela em um status de migração. Você pode verificar esta condição verificando se as linhas em sys_archive_ref_migration estão travadas em migrando status por um período extraordinário. Atualize o status de linha específico de migrando para aguardando e o. RefCopyJobcontinua a migração de dados na tabela quando o trabalho for executado novamente.  
O nó também pode falhar quando ArchiveRefJobtermina prematuramente. Verifique se as tabelas têm campos que são campos de referência e alguns que ainda são campos do tipo cadeia de caracteres. O trabalho pode ter parado no meio da mudança dos tipos de campo. Você pode resolver essa condição configurando um trabalho de gatilho para executar em um script em segundo plano, que inicia o processo novamente:

    GlideRecord trigger = new GlideRecord('sys_trigger');
    trigger.initialize();
    trigger.setValue('state', 0);
    trigger.setValue('trigger_type', 0);
    trigger.setValue('next_action', new GlideDateTime());
    trigger.setValue('job_context', 'fcRuleId=' + ruleId);
    trigger.setValue('name', 'Job Reference Migration' + ' Node - ' + new GlideClusterSynchronizer().getSystemID());
    trigger.setValue('trigger_class', 'com.glide.db.auxiliary.job.ArchiveRefJob');
    trigger.insert();


