Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Fase 3: migrazione
Un'attività principale delle migrazioni dei database consiste nel completare la migrazione con tempi di inattività minimi. Poiché entrambi i database devono utilizzare lo stesso linguaggio di programmazione e gli stessi protocolli di comunicazione, potrebbe essere necessario convertire il codice e lo schema per sintassi, procedure e funzioni di query simili. Durante la conversione di uno schema, considerate i seguenti aspetti:
-
Modificate la connessione al database in base alle esigenze del nuovo motore.
-
Correggi eventuali avvisi ed errori derivanti dalla conversione del codice.
-
Modifica le mappature e il codice delle tabelle in base allo schema convertito.
-
Identifica e rifattorizza qualsiasi funzionalità specifica del fornitore utilizzata dall'applicazione.
Puoi utilizzare qualsiasi strumento di migrazione di terze parti per la conversione del codice dello schema, come il database SAP ASE e Amazon RDS for SQL Server. Potrebbe essere necessario convertire del codice manualmente perché SQL non ANSI non è supportato in SQL Server.
Dopo aver convertito il codice, converti il codice dell'applicazione o l'applicazione SQL dinamico, quindi esegui test unitari e funzionali. Per ulteriori informazioni, vedere Testing Migrated Database Objects (SybaseToSQL).
Conversione dei dati
Trasforma i dati grezzi per renderli più utili pulendoli, standardizzandoli, verificandoli e ordinandoli. Nelle migrazioni dei database, i processi di estrazione, trasformazione e caricamento (ETL) vengono utilizzati nei seguenti modi:
-
All'interno del database
-
Con script esterni
-
Utilizzo di strumenti di terze parti
Esempi di strumenti ETL includono AWS Glue Informatica e Talend. Per le migrazioni da SAP ASE a SQL Server, alcuni strumenti gratuiti possono convertire automaticamente le procedure e le funzioni archiviate.
Convalida degli oggetti del database
La convalida del database aiuta a prevenire problemi nelle fasi successive della migrazione. Dopo la conversione del codice, convalida lo schema del database confrontando i seguenti elementi tra SAP ASE e RDS SQL Server:
-
Schemi
-
Tabelle
-
Visualizzazioni
-
Funzioni
-
Indici delle procedure memorizzate
-
Triggers
-
Vincoli (ad esempio, chiavi primarie, chiavi esterne, controlli e impostazioni predefinite)
Verificate che ogni oggetto sia stato migrato correttamente. Se trovi delle differenze, identifica il motivo dell'errore. Potrebbe essere necessario creare manualmente gli oggetti mancanti nel database di destinazione o convertire il codice Transact-SQL. Per ulteriori informazioni, consulta Convalida degli oggetti del database dopo la migrazione da SAP ASE ad Amazon RDS for SQL Server o Microsoft SQL Server
Migrazione dei dati utilizzando AWS DMS
Se hai più utenti del database, potrebbe essere necessario migrare l'applicazione in base a una pianificazione. A seconda delle dimensioni del database e della finestra di migrazione, tali migrazioni di dati richiedono la conoscenza dei carichi completi e incrementali. Per questo motivo, AWS DMS può connettere i database di origine e di destinazione per replicare il contenuto del database secondo i seguenti processi:
-
Creazione di un server di replica.
-
Crea endpoint di origine e destinazione che descrivono le connessioni ai data store.
-
Crea una o più attività di migrazione per migrare i dati tra gli archivi dati di origine e di destinazione.
-
Replica continua da SAP ASE a SQL Server
-
(Facoltativo) Migrazione completa dei dati da SAP ASE a SQL Server con acquisizione dei dati di modifica
Potrebbe essere necessario ottimizzare la gestione AWS DMS di determinati tipi di dati. Per ulteriori informazioni, vedere Utilizzo di un database SAP ASE come fonte per AWS DMS.
Migrazione dei dati offline
Puoi utilizzarlo Gateway di archiviazione AWS per integrare il tuo database SAP ASE con Amazon Simple Storage Service (Amazon S3), che fornisce uno storage conveniente, scalabile e sicuro per i backup di database SAP ASE locali. Per ulteriori informazioni, consulta Integrare un database SAP ASE con Amazon Gateway di archiviazione AWS S3
Utilizzo di strumenti di terze parti
Alcune applicazioni fungono da punto di contatto unico (SPOC) che si interfaccia con altre applicazioni. Durante la migrazione a una piattaforma di database SQL Server, queste interconnessioni potrebbero risentirne e il monitoraggio del database potrebbe richiedere strumenti nativi o di terze parti che utilizzano protocolli di comunicazione specifici del server. È importante valutare se queste applicazioni e strumenti dipendenti supportano già SQL Server o se necessitano di modifiche per funzionare correttamente.
Per le applicazioni in pacchetto, consulta i fornitori per determinare se supportano Amazon RDS for SQL Server. Per le applicazioni personalizzate, potrebbe essere necessario modificare il codice per garantire la compatibilità con il database migrato.
Monitoraggio del database
Indipendentemente dal percorso di migrazione scelto, Amazon CloudWatch svolge un ruolo nella raccolta di parametri, come il tipo di CPU, la memoria e I/O le funzioni. È anche in grado di impostare soglie di metriche e avviare azioni quando vengono attivate le soglie.
Ad esempio, puoi creare allarmi per parametri, notifiche e azioni del cluster Amazon RDS per rilevare e chiudere le istanze di lettura inutilizzate o sottoutilizzate. L'impostazione di allarmi su metriche ed eventi può aiutare a ridurre al minimo i tempi di inattività e gli impatti aziendali. Servizi AWS come Amazon S3, Amazon RDS Performance Insights,
Convalida dei dati
Una volta completata la migrazione dei dati da SAP ASE ad Amazon RDS for SQL Server, convalida i dati per garantire precisione e coerenza. Utilizza le seguenti query SQL per generare istruzioni di metadati per ogni tabella del database.
Fase 1: Generazione di istruzioni di metadati ed elenchi di colonne
SELECT dt.schema_name, dt.table_name, STRING_AGG(dt.column_name, ',') AS column_name, STRING_AGG(dt.cname, ',') AS column_order FROM ( SELECT object_name(a.id) AS table_name, a.name colname, c.name col_type, a.isnullable, a.name AS cname, schema_name(b.uid) AS schema_name, CASE WHEN a.isnullable = 1 THEN CASE WHEN c.name LIKE '%char%' THEN 'coalesce(ltrim(rtrim('+a.name+')),''X'') as '+a.name WHEN (c.name LIKE '%int%' OR c.name = 'numeric') THEN 'coalesce('+a.name+',0) as '+a.name WHEN c.name IN ('decimal','float','money') THEN 'coalesce('+a.name+',0.0) as '+a.name WHEN c.name LIKE 'datetime%' THEN 'coalesce(convert(nvarchar(30),'+a.name+',112),''99991231'') as '+a.name ELSE a.name END WHEN c.name LIKE 'datetime%' THEN 'coalesce(convert(nvarchar(30),'+a.name+',112),''99991231'') as '+a.name WHEN c.name LIKE '%char%' THEN 'coalesce(ltrim(rtrim('+a.name+')),''X'') as '+a.name ELSE a.name END AS column_name FROM syscolumns a INNER JOIN sysobjects b ON a.id = b.id AND b.type = 'U' INNER JOIN systypes c ON a.usertype = c.usertype AND a.xusertype = c.xusertype AND c.name != 'varbinary' INNER JOIN ( SELECT OBJECT_NAME(ic.OBJECT_ID) AS table_name, COL_NAME(ic.OBJECT_ID, ic.column_id) AS column_name FROM sys.indexes AS i INNER JOIN sys.index_columns AS ic ON i.OBJECT_ID = ic.OBJECT_ID AND i.index_id = ic.index_id AND i.is_primary_key = 1 ) pk ON pk.table_name = object_name(a.id) AND pk.column_name = a.name ) dt GROUP BY dt.schema_name, dt.table_name;
La tabella seguente elenca esempi di output:
Nome dello schema |
Nome della tabella |
Nome della colonna |
Ordine delle colonne |
|---|---|---|---|
Person |
Indirizzo |
IndirizzoID |
ID indirizzo |
Person |
AddressType |
AddressTypeID |
AddressTypeID |
Person |
BusinessEntity |
BusinessEntityID |
BusinessEntityID |
Person |
BusinessEntityAddress |
BusinessEntityID, ID indirizzo, ID AddressType |
BusinessEntityID, ID indirizzo, ID AddressType |
Fase 2: Generazione di query di confronto utilizzando i risultati dei metadati e creazione di istruzioni SELECT
SELECT <column_name> FROM [schema_name].[table_name] ORDER BY <column_order>;
Di seguito è riportato un esempio di query generata:
SELECT BusinessEntityID, AddressID, AddressTypeID FROM [Person].[BusinessEntityAddress] ORDER BY BusinessEntityID, AddressID, AddressTypeID;
Fase 3: Convalida
-
Esegui la query sui metadati in entrambi i database.
-
Genera ed esegui
SELECTistruzioni per ogni tabella. -
Confronta i risultati tra i database di origine e di destinazione:
-
Il numero di righe deve corrispondere.
-
I valori dei dati devono essere identici.
-
Verifica la presenza di problemi di conversione dei tipi di dati.
-
Fase 4: Convalida del conteggio delle righe
SELECT COUNT(1) AS total_rows FROM [schema_name].[table_name];
Passaggio 5: aggiorna la configurazione dell'applicazione in modo che punti al nuovo database
-
Aggiorna il gruppo di sicurezza.
-
Modifica la stringa di connessione DNS in base alle esigenze per connetterti al database di destinazione.
Test della migrazione
Il processo di test può aiutarti a identificare i problemi trascurati durante lo sviluppo, come le query convertite in modo errato o gli indici mancanti. Inoltre, potrebbe rivelare la necessità di ottimizzare il motore di database o modificare le query in base alle prestazioni del carico di lavoro.
I test funzionali, che includono test unitari per i flussi di lavoro delle applicazioni, aiutano a garantire una perfetta integrazione con il nuovo database. I test delle prestazioni aiutano a ottimizzare il database verificando i tempi di risposta accettabili e identificando i punti deboli.
Sebbene esistano metodi di test manuali e automatizzati, consigliamo un metodo automatizzato perché è più efficiente, soprattutto per cicli di test aggiuntivi.