⚐ 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 usandoSqlpackage.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