Impostazioni progetto (conversione) (DB2ToSQL)
La pagina Conversione della finestra di dialogo Impostazioni progetto contiene impostazioni che consentono di personalizzare la modalità di conversione della sintassi di DB2 nella sintassi di SQL Server.
Il riquadro Conversione è disponibile nelle finestre di dialogo Impostazioni progetto e Impostazioni progetto predefinite.
Per specificare le impostazioni per tutti i progetti SSMA, scegliere Impostazioni progetto predefinite dal menu Strumenti, selezionare il tipo di progetto di migrazione per cui è necessario visualizzare o modificare le impostazioni dall'elenco a discesa Versione destinazione migrazione, quindi fare clic su Generale nella parte inferiore del riquadro a sinistra, e infine su Conversione.
Per specificare le impostazioni per il progetto corrente, scegliere Impostazioni progetto dal menu Strumenti, fare clic su Generale nella parte inferiore del riquadro a sinistra, quindi su Conversione.
Messaggi di conversione
Generare messaggi relativi ai problemi applicati
Specifica se SSMA genera messaggi informativi durante la conversione, li visualizza nel riquadro Output e li aggiunge al codice convertito.
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica: No
Modalità estesa: No
Opzioni varie
Eseguire la trasmissione di espressioni ROWNUM come numeri interi
Quando SSMA converte espressioni ROWNUM, converte l'espressione in una clausola TOP seguita dall'espressione. L'esempio seguente mostra ROWNUM in un'istruzione DB2 DELETE:
DELETE FROM Table1
WHERE ROWNUM < expression and Field1 >= 2
L’esempio seguente mostra il Transact-SQL risultante:
DELETE TOP (expression-1)
FROM Table1
WHERE Field1>=2
L'oggetto TOP richiede che l'espressione di clausole TOP restituisca un numero intero. Se l'intero è negativo, l'istruzione genererà un errore.
Se si seleziona Sì, SSMA esegue la trasmissione dell'espressione come numero intero.
Se si seleziona No, SSMA contrassegnerà tutte le espressioni non in numeri interi come errore nel codice convertito.
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/estesa: No
Modalità ottimistica: Sì
Mapping dello schema predefinito
Questa impostazione specifica il modo in cui gli schemi DB2 vengono mappati in quelli di SQL Server. In questa impostazione sono disponibili due opzioni:
Schema al database: in questa modalità lo schema DB2 'sch1' verrà mappato per impostazione predefinita allo schema di SQL Server 'dbo' nel database di SQL Server 'sch1'.
Schema a schema: in questa modalità lo schema DB2 'sch1' verrà mappato per impostazione predefinita allo schema di SQL Server 'sch1' nel database SQL Server predefinito fornito nella finestra di dialogo di connessione.
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica/estesa: schema a database
Modi di conversione dell'istruzione MERGE
Se si seleziona Uso dell’istruzione INSERT, UPDATE, DELETE, SSMA converte l'istruzione MERGER in istruzioni INSERT, UPDATE, DELETE.
Se si seleziona Uso dell'istruzione MERGE, SSMA converte l'istruzione MERGER nell'istruzione MERGER in SQL Server.
Avviso
Questa opzione di impostazione del progetto è disponibile solo in SQL Server 2008, SQL Server 2012, SQL Server 2014.
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Impostazione predefinita/ottimistica/estesa: usare l'istruzione MERGE (UNIRE)
Convertire le chiamate in sottoprogrammi che usano argomenti predefiniti
Le funzioni di SQL Server non supportano l'omissione di parametri nella chiamata di funzione. Inoltre, le funzioni e le procedure di SQL Server non supportano le espressioni come valori di parametro predefiniti.
Se si seleziona Sì e una chiamata di funzione omette i parametri, SSMA inserirà la parola chiave predefinita nella funzione ed effettuerà la chiamata nella posizione corretta. Contrassegnerà quindi la chiamata con un avviso.
Se si seleziona No, SSMA contrassegnerà le chiamate di funzione come errori.
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica/estesa: Sì
Convertire la funzione COUNT in COUNT_BIG
Se è probabile che le funzioni COUNT restituiscano valori superiori a 2,147,483,647, ovvero 231-1, è necessario convertire le funzioni in COUNT_BIG.
Se si seleziona Sì, SSMA convertirà tutti gli usi di COUNT in COUNT_BIG.
Se si seleziona No, le funzioni rimarranno come COUNT. SQL Server restituirà un errore se la funzione restituisce un valore maggiore di 231-1.
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/estesa: Sì
Modalità ottimistica: No
Convertire l'istruzione FORALL nell'istruzione WHILE
Definisce il modo in cui SSMA tratterà i cicli FORALL sugli elementi della raccolta PL/SQL.
Se si seleziona Sì, SSMA crea un ciclo WHILE in cui gli elementi della raccolta vengono recuperati uno alla volta.
Se si seleziona No, SSMA genera un set di righe dalla raccolta usando il metodo nodes( ) e lo usa come singola tabella. Questa operazione è più efficiente, ma rende il codice di output meno leggibile.
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica: No
Modalità estesa: Sì
Convertire chiavi esterne con un'azione referenziale SET NULL nella colonna NON NULL
DB2 consente di creare vincoli di chiave esterna, in cui non è possibile eseguire un'azione SET NULL perché non sono consentiti valori NULL nella colonna a cui si fa riferimento. SQL Server non consente tale configurazione di chiave esterna.
Se si seleziona Sì, SSMA genererà azioni referenziale come in DB2, ma sarà necessario apportare modifiche manuali prima di caricare il vincolo in SQL Server. Ad esempio, è possibile scegliere NO ACTION anziché SET NULL.
Se si seleziona No, il vincolo verrà contrassegnato come errore.
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica/estesa: No
Convertire le chiamate di funzione in chiamate di procedura
Alcune funzioni DB2 sono definite come transazioni autonome o contengono istruzioni che non sarebbero valide in SQL Server. In questi casi, SSMA crea una procedura e una funzione che è un wrapper per la procedura. La chiamata di funzione convertita chiama la procedura di implementazione.
SSMA può convertire le chiamate alla funzione wrapper in chiamate alla procedura. Ciò dà vita a un codice più leggibile e può migliorare le prestazioni. Tuttavia, il contesto non lo consente sempre; ad esempio, non è possibile sostituire una chiamata di funzione nell'elenco SELECT con una chiamata di procedura. SSMA offre alcune opzioni per gestire i casi più comuni:
Se si seleziona Sempre, SSMA tenta di convertire le chiamate di funzione wrapper in chiamate di procedura. Se il contesto corrente non consente questa conversione, viene generato un messaggio di errore. In questo modo, nel codice generato non vengono lasciate chiamate di funzione.
Se si seleziona Quando possibile, SSMA esegue uno spostamento alle chiamate di procedura solo se la funzione dispone di parametri di output. Quando lo spostamento non è possibile, l'attributo di output del parametro viene rimosso. In tutti gli altri casi SSMA lascia le chiamate di funzione.
Se si seleziona Mai, SSMA lascerà tutte le chiamate di funzione come chiamate di funzione. A volte questa scelta può essere inaccettabile per motivi di prestazioni.
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica/estesa: quando possibile
Convertire istruzioni LOCK TABLE
SSMA può convertire molte istruzioni LOCK TABLE in hint di tabella. SSMA non può convertire istruzioni LOCK TABLE che contengono clausole PARTITION, SUBPARTITION, @dblinke NOWAIT e contrassegnerà tali istruzioni con messaggi di errore di conversione.
Se si seleziona Sì, SSMA convertirà le istruzioni LOCK TABLE supportate in hint di tabella.
Se si seleziona No, SSMA contrassegnerà tutte le istruzioni LOCK TABLE con messaggi di errore di conversione.
La tabella seguente illustra come SSMA converte le modalità di blocco DB2:
Modalità di blocco DB2 | Hint della tabella di SQL Server |
---|---|
ROW SHARE | ROWLOCK, HOLDLOCK |
ROW EXCLUSIVE | ROWLOCK, XLOCK, HOLDLOCK |
SHARE UPDATE = ROW SHARE | ROWLOCK, HOLDLOCK |
CONDIVIDI | TABLOCK, HOLDLOCK |
SHARE ROW EXCLUSIVE | TABLOCK, XLOCK, HOLDLOCK |
EXCLUSIVE | TABLOCKX, HOLDLOCK |
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica/estesa: Sì
Convertire istruzioni OPEN-FOR per i parametri REF CURSOR OUT
In DB2 l'istruzione OPEN-FOR può essere usata per restituire un set di risultati al parametro OUT di un sottoprogramma di tipo REF CURSOR. In SQL Server le stored procedure restituiscono direttamente i risultati delle istruzioni SELECT.
SSMA può convertire molte istruzioni OPEN-FOR in istruzioni SELECT.
Se si seleziona Sì, SSMA converte l'istruzione OPEN-FOR in un'istruzione SELECT, che restituisce il set di risultati al client.
Se si seleziona No, SSMA genererà un messaggio di errore nel codice convertito e nel riquadro Output.
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica/estesa: Sì
Convertire il record come elenco di variabili separate
SSMA può convertire i record DB2 in variabili separate e in variabili XML con una struttura specifica.
Se si seleziona Sì, SSMA converte il record in un elenco di variabili separate quando possibile.
Se si seleziona No, SSMA converte il record in variabili XML con struttura specifica.
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica/estesa: Sì
Convertire le chiamate di funzione SUBSTR in chiamate di funzione SUBSTRING
SSMA può convertire le chiamate di funzione DB2 SUBSTR in chiamate di funzione di substring di SQL Server, a seconda del numero di parametri. Se SSMA non è in grado di convertire una chiamata di funzione SUBSTR o il numero di parametri non è supportato, SSMA convertirà la chiamata di funzione SUBSTR in una chiamata di funzione SSMA personalizzata.
Se si seleziona Sì, SSMA convertirà le chiamate di funzione SUBSTR che usano tre parametri nella substring. di SQL Server. Altre funzioni SUBSTR verranno convertite per chiamare la funzione SSMA personalizzata.
Se si seleziona No, SSMA convertirà la chiamata alla funzione SUBSTR in una chiamata di funzione SSMA personalizzata.
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica: Sì
Modalità estesa: No
Convertire sottotipi
SSMA può convertire i sottotipi PL/SQL in due modi:
Se si seleziona Sì, SSMA creerà un tipo definito dall'utente (UDT) di SQL Server da un sottotipo e lo userà per ogni variabile di questo sottotipo.
Se si seleziona No, SSMA sostituirà tutte le dichiarazioni di origine del sottotipo con il tipo sottostante e convertirà il risultato come di consueto. In questo caso, non vengono creati tipi aggiuntivi in SQL Server
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica/estesa: No
Convertire sinonimi
È possibile eseguire la migrazione dei sinonimi per gli oggetti DB2 seguenti a SQL Server:
Tabelle e tabelle di oggetti
Viste e viste di oggetti
Stored procedure e funzioni
Viste materializzate
I sinonimi per gli oggetti DB2 seguenti possono essere sostituiti da riferimenti diretti agli oggetti:
Sequenze
Pacchetti
Oggetti dello schema di classe Java
Tipi di oggetto definiti dall'utente
Non è possibile eseguire la migrazione di altri sinonimi. SSMA genererà messaggi di errore per il sinonimo e per tutti i riferimenti che usano il sinonimo.
Se si seleziona Sì, SSMA creerà sinonimi di SQL Server e riferimenti diretti agli oggetti in base agli elenchi precedenti.
Se si seleziona No, SSMA creerà riferimenti a oggetti diretti per tutti i sinonimi elencati qui.
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica/estesa: Sì
Converti TO_CHAR(date, format)
SSMA può convertire TO_CHAR(date, format) di DB2 in procedure dal database sysdb.
Se si seleziona Usare la funzione TO_CHAR_DATE, SSMA converte TO_CHAR(date, format) nella funzione TO_CHAR_DATE utilizzando la lingua inglese per la conversione.
Se si seleziona Usare la funzione TO_CHAR_DATE_LS (NLS care), SSMA converte TO_CHAR(date, format) nella funzione TO_CHAR_DATE_LS utilizzando il linguaggio di sessione per la conversione
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica: uso della funzione TO_CHAR_DATE
Modalità estesa: uso della funzione TO_CHAR_DATE_LS (NLS care)
Convertire le istruzioni di elaborazione delle transazioni
SSMA può convertire le istruzioni di elaborazione delle transazioni di DB2:
Se si seleziona Sì, SSMA converte le istruzioni di elaborazione delle transazioni di DB2 in istruzioni di SQL Server.
Se si seleziona No, SSMA contrassegna le istruzioni di elaborazione delle transazioni come errori di conversione.
Nota
DB2 apre le transazioni in modo implicito. Per emulare questo comportamento in SQL Server, è necessario aggiungere manualmente istruzioni BEGIN TRANSACTION in cui si desidera avviare le transazioni. In alternativa, è possibile eseguire il comando SET IMPLICIT_TRANSACTIONS ON all'inizio della sessione. SSMA aggiunge automaticamente SET IMPLICIT_TRANSACTIONS ON durante la conversione di subroutine con transazioni autonome.
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica/estesa: Sì
Emulare il comportamento dei valori Null di DB2 nelle clausole ORDER BY
I valori NULL vengono ordinati in modo diverso in SQL Server e DB2:
In SQL Server i valori NULL sono i valori più bassi in un elenco ordinato. In un elenco crescente, i valori NULL verranno visualizzati per primi.
In DB2 i valori NULL sono i valori più alti in un elenco ordinato. Per impostazione predefinita, i valori NULL vengono visualizzati per ultimo in un elenco crescente.
DB2 include clausole NULLS FIRST e NULLS LAST, che consente di modificare il modo in cui DB2 ordina valori NULL.
SSMA può emulare il comportamento ORDER BY di DB2 controllando la presenza di valori NULL. Quindi ordina prima in base ai valori NULL nell'ordine specificato e poi in base ad altri valori.
Se si seleziona Sì, SSMA convertirà l'istruzione DB2 in modo da emulare il comportamento ORDER BY di DB2.
Se si seleziona No, SSMA ignorerà le regole DB2 e genererà un messaggio di errore quando rileva le clausole NULLS FIRST e NULLS LAST.
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica: No
Modalità estesa: Sì
Emulare le eccezioni del conteggio delle righe in SELECT
Se un'istruzione SELECT con una clausola INTO non restituisce righe, DB2 genera un'eccezione NO_DATA_FOUND. Se l'istruzione restituisce due o più righe, viene generata l'eccezione TOO_MANY_ROWS. L'istruzione convertita in SQL Server non genera alcuna eccezione se il conteggio delle righe è diverso da uno.
Se si seleziona Sì, SSMA aggiunge la chiamata alla routine sysdb db_error_exact_one_row_check dopo ogni istruzione SELECT. Questa procedura emula le eccezioni NO_DATA_FOUND e TOO_MANY_ROWS. Si tratta dell'impostazione predefinita e consente di riprodurre il comportamento DB2 il più vicino possibile. È sempre consigliabile scegliere Sì se il codice sorgente include gestori di eccezioni che elaborano tali errori. Si noti che se l'istruzione SELECT si verifica all'interno di una funzione definita dall'utente, questo modulo verrà convertito in una stored procedure, perché l'esecuzione di stored procedure e la generazione di eccezioni non è compatibile con il contesto di funzione di SQL Server.
Se si seleziona No, non verranno generate eccezioni. Ciò può essere utile quando SSMA converte una funzione definita dall'utente e si vuole che questa \rimanga una funzione in SQL Server
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica/estesa: Sì
Generare un errore per DBMS_SQL.PARSE
Se si seleziona Errore, SSMA genera un errore nel DBMS_SQL.PARSE di conversione.
Se si seleziona Avviso, SSMA genera un avviso nel DBMS_SQL.PARSE di conversione.
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica: Errore
Generare colonne ROWID
Quando SSMA crea tabelle in SQL Server, può creare una colonna ROWID. Quando si esegue la migrazione dei dati, ogni riga ottiene un nuovo valore UNIQUEIDENTIFIER generato dalla funzione newid().
Se si seleziona Sì, la colonna ROWID viene creata in tutte le tabelle e SQL Server genera GUID durante l'inserimento dei valori. Scegliere sempre Sì se si prevede di usare il tester SSMA.
Se si seleziona No, le colonne ROWID non vengono aggiunte alle tabelle.
Aggiungi colonna ROWID per le tabelle con trigger aggiunge ROWID per le tabelle contenenti trigger.
Avviso
L'impostazione predefinita nel caso di SQL Server 2005, SQL Server 2008 e SQL Server 2012 e 2014 è Aggiungi colonna ROWID per le tabelle con trigger.
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica: aggiungere la colonna ROWID per le tabelle con trigger
Modalità estesa: Sì
Generare un indice univoco nella colonna ROWID
Specifica se SSMA genera o meno una colonna di indice univoca nella colonna generata da ROWID. Se l'opzione è impostata su "SÌ", viene generato un indice univoco, mentre se è impostata su "NO" l'indice univoco non viene generato nella colonna ROWID.
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica/estesa: Sì
Conversione dei moduli locali
Definisce il tipo di sottoprogramma annidato DB2 (dichiarato nella conversione autonoma di stored procedure o funzione).
Se si seleziona Inline, le chiamate al sottoprogramma annidato verranno sostituite dal relativo corpo.
Se si seleziona Stored procedure, il sottoprogramma annidato verrà convertito in una stored procedure di SQL Server e le relative chiamate verranno sostituite in questa chiamata di procedura.
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica/estesa: Inline
Usare ISNULL nella concatenazione di stringhe
DB2 e SQL Server restituiscono risultati diversi quando le concatenazioni di stringhe includono valori NULL. DB2 considera il valore NULL come un set di caratteri vuoto. SQL Server restituisce NULL.
Se si seleziona Sì, SSMA sostituisce il carattere di concatenazione DB2 (||) con il carattere di concatenazione di SQL Server (+). SSMA controlla anche le espressioni su entrambi i lati della concatenazione per i valori NULL.
Se si seleziona No, SSMA sostituisce i caratteri di concatenazione, ma non verifica la presenza di valori NULL.
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Usare ISNULL nelle chiamate di funzione REPLACE
L'istruzione ISNULL viene usata nelle chiamate di funzione REPLACE per emulare il comportamento DB2. Per questa impostazione sono presenti le opzioni seguenti:
SÌ
NO
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica: No
Modalità estesa: Sì
Usare ISNULL nelle chiamate di funzione CONCAT
L'istruzione ISNULL viene usata nelle chiamate di funzione CONCAT per emulare il comportamento DB2. Per questa impostazione sono presenti le opzioni seguenti:
SÌ
NO
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica: No
Modalità estesa: Sì
Usare la funzione di conversione nativa, quando possibile
Se si seleziona Sì, SSMA converte TO_CHAR(date, format) in funzione di conversione nativa, quando possibile.
Se si seleziona No, SSMA converte TO_CHAR(date, format) in TO_CHAR_DATE o TO_CHAR_DATE_LS (è definito dalle opzioni "Converti TO_CHAR(date, format)").
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica: Sì
Modalità estesa: No
Usare SELECT... FOR XML durante la conversione di SELECT... IN per variabile record
Specifica se generare un set di risultati XML quando si seleziona una variabile di record.
Se si seleziona Sì, l'istruzione SELECT restituisce XML.
Se si seleziona No, l'istruzione SELECT restituisce un set di risultati.
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica/estesa: No
Conversione della clausola RETURNING
Convertire la clausola RETURNING nell'istruzione DELETE in OUTPUT
DB2 fornisce una clausola RETURNING come modo per ottenere immediatamente i valori eliminati. SQL Server fornisce tale funzionalità con la clausola OUTPUT.
Se si seleziona Sì, SSMA convertirà le clausole RETURNING nelle istruzioni DELETE in clausole OUTPUT. Poiché i trigger in una tabella possono modificare i valori, il valore restituito potrebbe essere diverso in SQL Server rispetto a quello in DB2.
Se si seleziona No, SSMA genererà un'istruzione SELECT prima delle istruzioni DELETE per recuperare i valori restituiti.
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica/estesa: Sì
Convertire la clausola RETURNING nell'istruzione INSERT in OUTPUT
DB2 fornisce una clausola RETURNING come modo per ottenere immediatamente i valori inseriti. SQL Server fornisce tale funzionalità con la clausola OUTPUT.
Se si seleziona Sì, SSMA convertirà una clausola RETURNING in un'istruzione INSERT in OUTPUT. Poiché i trigger in una tabella possono modificare i valori, il valore restituito potrebbe essere diverso in SQL Server rispetto a quello in DB2.
Se si seleziona No, SSMA emula la funzionalità DB2 inserendo e quindi selezionando i valori da una tabella di riferimento.
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica/estesa: Sì
Convertire la clausola RETURNING nell'istruzione UPDATE in OUTPUT
DB2 fornisce una clausola RETURNING come modo per ottenere immediatamente i valori aggiornati. SQL Server fornisce tale funzionalità con la clausola OUTPUT.
Se si seleziona Sì, SSMA convertirà le clausole RETURNING nelle istruzioni UPDATE in clausole OUTPUT. Poiché i trigger in una tabella possono modificare i valori, il valore restituito potrebbe essere diverso in SQL Server rispetto a quello in DB2.
Se si seleziona No, SSMA genererà istruzioni SELECT dopo le istruzioni UPDATE per recuperare i valori restituiti.
Quando si seleziona una modalità di conversione nella casella Modalità, SSMA applica l'impostazione seguente:
Modalità di impostazione predefinita/ottimistica/estesa: Sì
Conversione sequenza
Convertire il generatore di sequenza
In DB2 è possibile usare una sequenza per generare identificatori univoci.
SSMA può convertire le sequenze nel modo seguente.
Uso del generatore di sequenze di SQL Server (questa opzione è disponibile solo quando si esegue la conversione in SQL Server 2012 e SQL Server 2014).
Uso del generatore di sequenze di SSMA.
Uso dell'identità della colonna.
L'opzione predefinita quando si esegue la conversione in SQL Server 2012 o SQL Server 2014 consiste nell'usare il generatore di sequenze di SQL Server. Tuttavia, SQL Server 2012 e SQL Server 2014 non supporta l'acquisizione del valore di sequenza corrente, ad esempio quello del metodo currval di sequenza DB2. Per indicazioni sulla migrazione del metodo currval di sequenza DB2, vedere il sito di blog del team di SSMA.
SSMA offre anche un'opzione per convertire la sequenza DB2 nell'emulatore di sequenza SSMA. Questa è l'opzione predefinita quando si esegue la conversione in SQL Server prima del 2012
Infine, è inoltre possibile convertire la sequenza assegnata a una colonna nella tabella in valori identità di SQL Server. È necessario specificare il mapping tra le sequenze per una colonna identity nella scheda Tabella di DB2
Convertire trigger esterni CURRVAL
Visibile solo quando Convertire generatore di sequenza è impostato su Uso della colonna dell'identità. Poiché le sequenze DB2 sono oggetti separati dalle tabelle, molte tabelle che usano sequenze usano un trigger per generare e inserire un nuovo valore di sequenza. SSMA imposta queste istruzioni come commenti oppure le contrassegna come errori quando i commenti sarebbero fonti di errori.
Se si seleziona Sì, SSMA contrassegnerà tutti i riferimenti a trigger esterni nella sequenza convertita CURRVAL con un avviso.
Se si seleziona No, SSMA contrassegnerà tutti i riferimenti a trigger esterni nella sequenza convertita CURRVAL con un errore.