PT
Español
English
Português
    Migrar banco de dados de agrupamento

    Nota: Antes de começar, pare todos os serviços que apontam para o banco de dados e faça um backup do banco de dados.


    Recursos necessários

    No Base de conhecimento de Aranda poder baixar o pacote necessário para executar a migração.

    Pasta com collatemigr com collatemigr.exe Executável que modifica a colação, dados/tables_collation Agrupamento especial para alguns quadros de adm

    • Verifique se o banco de dados está localizado em uma ordenação diferente de SQL_Latin1_General_CP1_CI_AI. Clique com o botão direito do mouse no Base de dados > Propriedades
    • Verifique se o banco de dados está na versão 9.5.13
    • Usando o sqlpackage.exe verificar se o banco de dados não tem diferenças no nível do esquema. Para informações adicionais
    • Se houver diferenças, atualize o esquema do banco de dados. Se você não conseguir atualizar o esquema, interrompa o processo e entre em contato com o suporte.
    • Execute o seguinte script no banco de dados
          SELECT
              id,
              MIN(id) OVER(PARTITION BY product_id, version ORDER BY id) min_id,
              version
          INTO #SOFTWARE_IDS
          FROM (
                  SELECT
                          id,
                          product_id,
                          SUBSTRING(version, 1, PATINDEX('%[abcdefghijklmniopqrstuvwxyzz0123456789][^0123456789./()_-]%', version)) version
                  FROM AAM_SOFTWARE_VERSION
                  WHERE version LIKE '%[^abcdefghijklmniopqrstuvwxyz0-9./ ()_-]%'
                  UNION
                  SELECT
                          id,
                          product_id,
                          version
                  FROM AAM_SOFTWARE_VERSION
                  WHERE version in (
                          SELECT
                              SUBSTRING(version, 1,PATINDEX('%[abcdefghijklmniopqrstuvwxyzz0123456789][^0123456789./ ()_-]%', version)) version
                          FROM AAM_SOFTWARE_VERSION
                          WHERE version LIKE '%[^abcdefghijklmniopqrstuvwxyz0-9./ ()_-]%')
          ) t;
      
          UPDATE ds SET
                  ds.software_id = si.min_id
          FROM AAM_DEVICE_SOFTWARE ds
          JOIN #SOFTWARE_IDS si ON si.id = ds.software_id;
      
          UPDATE fv SET
                  fv.software_id = si.min_id
          FROM AAM_FILE_VERSION fv
          JOIN #SOFTWARE_IDS si ON si.id = fv.software_id;
      
          UPDATE sv SET
                  sv.parent_id = si.min_id
          FROM AAM_SOFTWARE_VERSION sv
          JOIN #SOFTWARE_IDS si ON si.id = sv.product_id and sv.parent_id is not null;
      
          UPDATE fr SET
                  fr.software_id = si.min_id
          FROM ASM_FILE_RULE fr
          JOIN #SOFTWARE_IDS si ON si.id = fr.software_id;
      
          UPDATE ls SET
                  ls.software_id = si.min_id
          FROM ASM_LICENSE_SOFTWARE ls
          JOIN #SOFTWARE_IDS si ON si.id = ls.software_id;
      
          UPDATE cl SET
                  cl.software_version_id = si.min_id
          FROM ASM_SOFT_USAGE_CONFIG_LIST cl
          JOIN #SOFTWARE_IDS si ON si.id = cl.software_version_id;
      
          UPDATE sc SET
                  sc.software_id = si.min_id
          FROM ASM_SOFTWARE_CATEGORY sc
          JOIN #SOFTWARE_IDS si ON si.id = sc.software_id;
      
          UPDATE fs SET
                  fs.software_version_id = si.min_id
          FROM ASM_SOFTWARE_FILE_SUGGES fs
          JOIN #SOFTWARE_IDS si ON si.id = fs.software_version_id;
      
          UPDATE sg SET
                  sg.software_id = si.min_id
          FROM ASM_SOFTWARE_GROUP sg
          JOIN #SOFTWARE_IDS si ON si.id = sg.software_id;
      
          UPDATE sr SET
                  sr.software_id = si.min_id
          FROM ASM_SOFTWARE_RULE sr
          JOIN #SOFTWARE_IDS si ON si.id = sr.software_id;
      
          DELETE sv
          FROM AAM_SOFTWARE_VERSION sv
          JOIN #SOFTWARE_IDS si ON si.id = sv.id
          WHERE sv.version LIKE '%[^abcdefghijklmniopqrstuvwxyz0-9./ ()_-]%'AND sv.id > si.min_id;
      
          UPDATE sv
          SET sv.version=si.version
          FROM AAM_SOFTWARE_VERSION sv
          JOIN #SOFTWARE_IDS si ON si.id = sv.id
          WHERE sv.version LIKE '%[^abcdefghijklmniopqrstuvwxyz0-9./ ()_-]%'AND sv.id = si.min_id;
          DROP TABLE #SOFTWARE_IDS
      
      
    
    • Exporte um bacpac do banco de dados, esse processo pode levar algum tempo dependendo da quantidade de dados. Clique com o botão direito do mouse no Base de dados > Tarefa > Exportar camada de dados
    • Execute a seguinte linha em um console do Windows, a partir do local do executável collatemigr
      collatemigr -file “[caminho]\ADMAranda.bacpac”
      Rota = localização do bacpac
    • Quando o processo estiver concluído, importe o bacpac novamente.
      Sugestão- Você pode importar o banco de dados com um nome diferente do original se quiser manter um backup adicional
    • Uma vez finalizada a importação do banco de dados, execute uma nova importação, comparando as informações, utilizando Sqlpackage.exe e verificar se não há diferenças. Caso contrário, atualize os diffs usando Sqlpackage.exe, antes de executar a atualização de versão no banco de dados.
    • Quando não houver diferenças, continue com a atualização do banco de dados