Regole di valutazione per la migrazione dei database di SQL Server a database SQL di Azure
Si applica a: database SQL di Azure
Gli strumenti di migrazione convalidano l'istanza di SQL Server di origine eseguendo diverse regole di valutazione per identificare i problemi che devono essere risolti prima della migrazione del database di SQL Server a database SQL di Azure.
Questo articolo fornisce un elenco delle regole usate per valutare la fattibilità della migrazione del database di SQL Server a database SQL di Azure.
Riepilogo delle regole
BULK INSERT
Titolo: BULK INSERT con origine dati BLOB non Azure non è supportato in database SQL di Azure.
Categoria: problema
Descrizione
Database SQL di Azure non può accedere alle condivisioni file o alle cartelle di Windows. Vedere la sezione "Oggetti interessati" per gli usi specifici delle istruzioni BULK INSERT
che non fanno riferimento a un BLOB di Azure. Gli oggetti con BULK INSERT
cui l'origine non è Archiviazione BLOB di Azure non funzionano dopo la migrazione a database SQL di Azure.
Consiglio
È necessario convertire le istruzioni BULK INSERT
che usano file o condivisioni file locali per usare i file da Archiviazione BLOB di Azure invece durante la migrazione a database SQL di Azure. In alternativa, eseguire la migrazione di SQL Server su VM di Azure.
Clausola COMPUTE
Titolo: la clausola COMPUTE non è più supportata ed è stata rimossa.
Categoria: avviso
Descrizione
La clausola COMPUTE genera totali visualizzati come colonne di riepilogo aggiuntive alla fine del set di risultati. Tuttavia, questa clausola non è più supportata in database SQL di Azure.
Consiglio
Il modulo T-SQL deve essere riscritto usando invece l'operatore ROLLUP. Il codice seguente illustra come sostituire COMPUTE
con ROLLUP
:
USE AdventureWorks2022;
GO
SELECT SalesOrderID,
UnitPrice,
UnitPriceDiscount
FROM Sales.SalesOrderDetail
ORDER BY SalesOrderID COMPUTE SUM(UnitPrice),
SUM(UnitPriceDiscount) BY SalesOrderID;
GO
SELECT SalesOrderID,
UnitPrice,
UnitPriceDiscount,
SUM(UnitPrice) AS UnitPrice,
SUM(UnitPriceDiscount) AS UnitPriceDiscount
FROM Sales.SalesOrderDetail
GROUP BY SalesOrderID,
UnitPrice,
UnitPriceDiscount
WITH ROLLUP;
Per altre informazioni, vedere: Funzionalità del motore di database non più disponibili in SQL Server.
Assembly CLR
Titolo: gli assembly CLR di SQL non sono supportati in database SQL di Azure
Categoria: problema
Descrizione
Il database SQL di Azure non supporta assembly SQL CLR.
Consiglio
Attualmente, non esiste alcun modo per ottenere questo risultato nel database SQL di Azure. Le soluzioni alternative consigliate richiedono modifiche al codice dell'applicazione e al database per usare solo gli assembly supportati da database SQL di Azure. In alternativa, eseguire la migrazione a Istanza gestita di SQL di Azure o SQL Server nelle Macchine virtuali di Azure.
Per altre informazioni, vedere: Differenze Transact-SQL non supportate in database SQL.
Provider di crittografia
Titolo: è stato trovato un uso di CREATE CRYPTOGRAPHIC PROVIDER o ALTER CRYPTOGRAPHIC PROVIDER, che non è supportato in database SQL di Azure
Categoria: problema
Descrizione
Database SQL di Azure non supporta le istruzioni CRYPTOGRAPHIC PROVIDER perché non è in grado di accedere ai file. Vedere la sezione Oggetti interessati per gli usi specifici delle istruzioni CRYPTOGRAPHIC PROVIDER. Gli oggetti con CREATE CRYPTOGRAPHIC PROVIDER
o ALTER CRYPTOGRAPHIC PROVIDER
non funzionano correttamente dopo la migrazione a database SQL di Azure.
Consiglio
Esaminare gli oggetti con CREATE CRYPTOGRAPHIC PROVIDER
o ALTER CRYPTOGRAPHIC PROVIDER
. In tutti gli oggetti necessari rimuovere gli usi di queste funzionalità. In alternativa, eseguire la migrazione di SQL Server su VM di Azure.
Riferimenti tra database
Titolo: le query tra database non sono supportate in Database SQL di Azure
Categoria: problema
Descrizione
I database su questo server utilizzano query tra database, che non sono supportate in database SQL di Azure.
Consiglio
Il database SQL di Azure non supporta query tra database. Sono consigliati i gruppi di azioni di controllo seguenti:
- Eseguire la migrazione dei database dipendenti al database SQL di Azure e usare la funzionalità di query elastica per eseguire query tra database SQL di Azure.
- Spostare i set di dati dipendenti da altri database nel database di cui viene eseguita la migrazione.
- Eseguire la migrazione a Istanza gestita di SQL di Azure.
- Eseguire la migrazione di SQL Server su Macchine virtuali di Azure.
Per altre informazioni, vedere Panoramica delle query elastiche del database sQL di Azure (anteprima).
Compatibilità del database
Titolo: database SQL di Azure non supporta i livelli di compatibilità inferiori a 100.
Categoria: avviso
Descrizione
Il livello di compatibilità del database è uno strumento utile per la modernizzazione dei database poiché consente di aggiornare il motore di database di SQL Server e di preservare lo stato funzionale delle applicazioni che si connettono mantenendo lo stesso livello di compatibilità del database precedente all'aggiornamento. Database SQL di Azure non supporta i livelli di compatibilità inferiori a 100.
Consiglio
Valutare se la funzionalità dell'applicazione è intatta quando il livello di compatibilità del database viene aggiornato a 100 in Istanza gestita di SQL di Azure. In alternativa, eseguire la migrazione di SQL Server su VM di Azure.
Posta elettronica database
Titolo: Database Mail non è supportato nel database Azure SQL.
Categoria: avviso
Descrizione
Questo server usa la funzionalità di Database Mail, che non è supportata in database SQL di Azure.
Consiglio
Valutare la possibilità di eseguire la migrazione a Istanza gestita di SQL di Azure che supporta Database Mail. In alternativa, è consigliabile usare funzioni di Azure e SendGrid per eseguire la funzionalità di posta in database SQL di Azure.
Alias delle entità database
Titolo: SYS.DATABASE_PRINCIPAL_ALIASES non è più supportato ed è stato rimosso.
Categoria: problema
Descrizione
sys.database_principal_aliases
non è più supportato ed è stato rimosso dal database SQL di Azure.
Consiglio
Usare ruoli anziché alias.
Per altre informazioni, vedere: Funzionalità del motore di database non più disponibili in SQL Server.
Opzione DISABLE_DEF_CNST_CHK
Titolo: l'opzione SET DISABLE_DEF_CNST_CHK è stata sospesa ed è stata rimossa.
Categoria: problema
Descrizione
L'opzione SET DISABLE_DEF_CNST_CHK è stata sospesa ed è stata rimossa in database SQL di Azure.
Per altre informazioni, vedere: Funzionalità del motore di database non più disponibili in SQL Server.
Hint FASTFIRSTROW
Titolo: la query FASTFIRSTROW non è più supportata ed è stata rimossa.
Categoria: avviso
Descrizione
L'hint per la query FASTFIRSTROW non è più supportato ed è stato rimosso in database SQL di Azure.
Consiglio
Anziché l'hint per la query FASTFIRSTROW, usare OPTION (FAST n).
Per altre informazioni, vedere: Funzionalità del motore di database non più disponibili in SQL Server.
FILESTREAM
Titolo: FILESTREAM non è supportato nel database SQL di Azure
Categoria: problema
Descrizione
La funzionalità FILESTREAM, che consente di archiviare dati non strutturati, ad esempio documenti di testo, immagini e video nel file system NTFS, non è supportata in database SQL di Azure.
Consiglio
Caricare i file non strutturati nell'archivio BLOB di Azure e archiviare i metadati correlati a questi file (nome, tipo, percorso URL, chiave di archiviazione e così via) in database SQL di Azure. Potrebbe essere necessario riprogettare l'applicazione per abilitare i BLOB di streaming da e verso il database SQL di Azure. In alternativa, eseguire la migrazione di SQL Server su VM di Azure.
Altre informazioni: Blog sui BLOB di streaming da e verso Azure SQL.
Server collegato
Titolo: la funzionalità del server collegato non è supportata in database SQL di Azure
Categoria: problema
Descrizione
I server collegati consentono a SQL Server Database Engine di eseguire comandi contro le fonti di dati OLE DB al di fuori dell'istanza di SQL Server.
Consiglio
Database SQL di Azure non supporta la funzionalità del server collegato. Per eliminare la necessità di server collegati, è consigliabile eseguire le azioni seguenti:
- Identificare i set di dati dipendenti dai server SQL remoti e prendere in considerazione la possibilità di spostarli nel database di cui viene eseguita la migrazione.
- Eseguire la migrazione dei database dipendenti ad Azure e usare la funzionalità di query di database elastica (anteprima) per eseguire query tra database SQL di Azure.
Per altre informazioni, vedere Panoramica delle query elastiche del database sQL di Azure (anteprima).
MS DTC
Titolo: BEGIN DISTRIBUTED TRANSACTION non è supportato in database SQL di Azure.
Categoria: problema
Descrizione
La transazione distribuita avviata da Transact SQL BEGIN DISTRIBUTED TRANSACTION e gestita da Microsoft Distributed Transaction Coordinator (MS DTC) non è supportata in database SQL di Azure.
Consiglio
Esaminare la sezione relativa agli oggetti interessati in Azure Migrate per visualizzare tutti gli oggetti usando BEGIN DISTRIBUTED TRANSACTION. Valutare la possibilità di eseguire la migrazione dei database partecipanti a Istanza gestita di SQL di Azure in cui sono supportate le transazioni distribuite tra più istanze.
Per altre informazioni, vedere Transazioni tra più server per Istanza gestita di SQL di Azure.
In alternativa, eseguire la migrazione di SQL Server su VM di Azure.
OPENROWSET (bulk)
Titolo: OpenRowSet usato nell'operazione bulk con l'origine dati di archiviazione BLOB non di Azure non è supportato in database SQL di Azure.
Categoria: problema
Descrizione: OPENROWSET supporta le operazioni in blocco tramite un provider BULK predefinito che consente di leggere i dati da un file e restituirli come set di righe. OPENROWSET con origine dati di archiviazione BLOB non di Azure non è supportato in database SQL di Azure.
Consiglio
Un database SQL di Azure non può accedere a condivisioni file e cartelle di Windows e pertanto i file devono essere importati da un'archiviazione BLOB di Azure: Pertanto, nella funzione OPENROWSET è supportato solo il tipo di BLOB DATASOURCE. In alternativa, eseguire la migrazione a SQL Server su Macchine virtuali di Azure
Per altre informazioni, vedere Risoluzione delle differenze di Transact-SQL durante la migrazione al database SQL.
OPENROWSET (provider)
Titolo: OpenRowSet con provider SQL o non SQL non è supportato in database SQL di Azure.
Categoria: problema
Descrizione
OpenRowSet con provider SQL o non-SQL è un metodo alternativo per l'accesso alle tabelle di un server collegato e corrisponde a un metodo ad hoc eseguito una sola volta per la connessione e l'accesso ai dati remoti tramite OLE DB. OpenRowSet con provider SQL o non SQL non è supportato in database SQL di Azure.
Consiglio
Database SQL di Azure supporta OPENROWSET solo per l'importazione da Archiviazione BLOB di Azure. In alternativa, eseguire la migrazione di SQL Server su VM di Azure.
Per altre informazioni, vedere Risoluzione delle differenze di Transact-SQL durante la migrazione al database SQL.
Left outer join non ANSI
Titolo: lo stile left outer join non ANSI non è più supportato ed è stato rimosso.
Categoria: avviso
Descrizione
Lo stile left outer join non ANSI non è più supportato ed è stato rimosso nel database SQL di Azure.
Consiglio
Utilizzare la sintassi di join ANSI.
Per altre informazioni, vedere: Funzionalità del motore di database non più disponibili in SQL Server.
Right outer join non ANSI
Titolo: right outer join non ANSI non è più supportato ed è stato rimosso.
Categoria: avviso
Descrizione
Lo stile right outer join non ANSI non è più supportato ed è stato rimosso nel database SQL di Azure.
Consiglio
Utilizzare la sintassi di join ANSI.
Per altre informazioni, vedere: Funzionalità del motore di database non più disponibili in SQL Server.
Colonna successiva
Titolo: le tabelle e le colonne denominate NEXT generano un errore in database SQL di Azure.
Categoria: problema
Descrizione
Sono state rilevate tabelle o colonne denominate NEXT. Nelle sequenze introdotte in Microsoft SQL Server viene usata la funzione NEXT VALUE FOR dello standard ANSI. Se una tabella o una colonna è denominata NEXT e la colonna viene sottoposta ad alias come VALUE e se l'AS standard ANSI viene omesso, l'istruzione risultante può causare un errore.
Consiglio
Riscrivere le istruzioni per includere la parola chiave AS standard ANSI durante l'aliasing di una tabella o di una colonna. Ad esempio, quando una colonna è denominata NEXT e tale colonna è con alias VALUE, la query SELECT NEXT VALUE FROM TABLE
genera un errore e deve essere riscritta come SELECT NEXT AS VALUE FROM TABLE. Analogamente, quando una tabella è denominata NEXT e tale tabella viene sottoposta ad alias come VALUE, la query SELECT Col1 FROM NEXT VALUE
genera un errore e deve essere riscritta come SELECT Col1 FROM NEXT AS VALUE
.
RAISERROR
Titolo: le chiamate RAISERROR legacy devono essere sostituite con equivalenti moderni.
Categoria: avviso
Descrizione
Le chiamate RAISERROR come l'esempio seguente vengono definite in stile legacy perché non includono le virgole e le parentesi. RAISERROR 50001 'this is a test'
. Questo metodo di chiamata a RAISERROR non è più supportato e rimosso in database SQL di Azure.
Consiglio
Riscrivere l'istruzione usando la sintassi RAISERROR corrente o valutare se l'approccio moderno di BEGIN TRY { } END TRY BEGIN CATCH { THROW; } END CATCH
è fattibile.
Per altre informazioni, vedere: Funzionalità del motore di database non più disponibili in SQL Server.
Controlli server
Titolo: usare la funzionalità di controllo del database SQL di Azure per sostituire i controlli del server
Categoria: avviso
Descrizione
Server Audits non è supportato in database SQL di Azure.
Consiglio
Considerare la funzionalità di controllo del database SQL di Azure per sostituire i controlli del server. Azure SQL supporta il controllo e le funzionalità sono più avanzate di SQL Server. Database SQL di Azure può controllare varie azioni ed eventi del database, tra cui: accesso ai dati, modifiche dello schema (DDL), modifiche dei dati (DML), account, ruoli e autorizzazioni (DCL, eccezioni di sicurezza). Il servizio di controllo del database SQL di Azure aumenta la possibilità di ottenere informazioni dettagliate sugli eventi e le modifiche apportate all'interno del database, inclusi gli aggiornamenti e le query sui dati. In alternativa, eseguire la migrazione a Istanza gestita di SQL di Azure o SQL Server nelle Macchine virtuali di Azure.
Per altre informazioni sul controllo, vedere Controllo per database SQL di Azure e Azure Synapse Analytics.
Credenziali del server
Titolo: le credenziali con ambito server non sono supportate in database SQL di Azure
Categoria: avviso
Descrizione
Una credenziale è un record contenente le informazioni di autenticazione (credenziali) necessarie per connettersi a una risorsa all'esterno di SQL Server. Database SQL di Azure supporta le credenziali del database, ma non quelle create nell'ambito di SQL Server.
Consiglio
Database SQL di Azure supporta le credenziali con ambito database. Convertire le credenziali con ambito server in credenziali con ambito database. In alternativa, eseguire la migrazione a Istanza gestita di SQL di Azure o SQL Server nelle Macchine virtuali di Azure.
Per altre informazioni, vedere CREATE DATABASE SCOPED CREDENTIAL
Service Broker
Titolo: la funzionalità Service Broker non è supportata nel database SQL di Azure
Categoria: problema
Descrizione
SQL Server Service Broker offre supporto nativo per la messaggistica e l'accodamento delle applicazioni nel motore di database di SQL Server. La funzionalità Service Broker non è supportata nel database SQL di Azure.
Consiglio
La funzionalità Service Broker non è supportata nel database SQL di Azure. Prendere in considerazione la migrazione a Istanza gestita di SQL di Azure che supporta Service Broker all'interno della stessa istanza. In alternativa, eseguire la migrazione di SQL Server su VM di Azure.
Trigger in ambito server
Titolo: i trigger in ambito server non sono supportati in database SQL di Azure
Categoria: avviso
Descrizione
Un trigger è un tipo speciale di procedura conservata che viene eseguito in risposta a determinate azioni in una tabella, ad esempio inserimento, eliminazione o aggiornamento dei dati. Il trigger in ambito server non è supportato in database SQL di Azure. Database SQL di Azure non supporta le opzioni seguenti per i trigger: FOR LOGON, ENCRYPTION, WITH APPEND, NOT FOR REPLICATION, EXTERNAL NAME (non sono disponibili supporti per i metodi esterni), ALL SERVER (DDL Trigger), trigger su evento LOGON (Logon Trigger); database SQL di Azure non supporta i trigger CLR.
Consiglio
Usare i trigger a livello di database. In alternativa, eseguire la migrazione a Istanza gestita di SQL di Azure o SQL Server nelle Macchine virtuali di Azure.
Per altre informazioni, vedere Risoluzione delle differenze di Transact-SQL durante la migrazione al database SQL.
Processi di SQL Agent
Titolo: i processi di SQL Agent non sono disponibili in Database SQL di Azure
Categoria: avviso
Descrizione
SQL Server Agent è un servizio di Microsoft Windows per l'esecuzione di attività amministrative pianificate, denominate processi in SQL Server. I processi di SQL Agent non sono disponibili in Database SQL di Azure.
Consiglio
Usare processi elastici, che rappresentano la sostituzione dei processi di SQL Server Agent in database SQL di Azure. I processi elastici per il database SQL di Azure consentono di eseguire in modo affidabile script T-SQL che si estendono su più database, effettuando tentativi automatici per garantire il completamento delle operazioni. In alternativa, prendere in considerazione la migrazione a Istanza gestita di SQL di Azure o SQL Server in VM Azure. Per altre informazioni, vedere Processi elastici nel database SQL di Azure.
Dimensioni del database SQL
Titolo: il database SQL di Azure non supporta dimensioni del database superiori a 100 TB.
Categoria: problema
Descrizione
Le dimensioni del database sono maggiori delle dimensioni massime supportate di 100 TB.
Consiglio
Valutare se i dati possono essere archiviati o compressi o partizionati in più database. In alternativa, eseguire la migrazione di SQL Server su VM di Azure.
Per altre informazioni, vedere i limiti delle risorse vCore.
SQL Mail
Titolo: SQL Mail non è più disponibile.
Categoria: avviso
Descrizione
SQL Mail è stato sospeso e rimosso in database SQL di Azure.
Consiglio
Valutare la possibilità di eseguire la migrazione a Istanza gestita di SQL di Azure o SQL Server in VM Azure e usare Database Mail.
Per altre informazioni, vedere: Funzionalità del motore di database non più disponibili in SQL Server
SystemProcedures110
Titolo: istruzioni rilevate che fanno riferimento a procedure archiviate di sistema rimosse che non sono disponibili in database SQL di Azure.
Categoria: avviso
Descrizione
Le seguenti procedure archiviate estese e di sistema non supportate non possono essere usate in database SQL di Azure - sp_dboption
, sp_addserver
, sp_dropalias
,sp_activedirectory_obj
, sp_activedirectory_scp
, sp_activedirectory_start
.
Consiglio
Rimuovere i riferimenti alle procedure di sistema non supportate rimosse in database SQL di Azure.
Per altre informazioni, vedere: Funzionalità del motore di database non più disponibili in SQL Server
Flag di traccia
Titolo: il database SQL di Azure non supporta i flag di traccia
Categoria: avviso
Descrizione
I flag di traccia vengono usati per impostare funzionalità del server specifiche o per modificare un particolare comportamento. I flag di traccia vengono spesso usati per diagnosticare i problemi di prestazioni o per eseguire il debug di procedure archiviate o sistemi informatici complessi. Database SQL di Azure non supporta i flag di traccia.
Consiglio
Esaminare la sezione relativa agli oggetti interessati in Azure Migrate per visualizzare tutti i flag di traccia non supportati in database SQL di Azure e valutare se possono essere rimossi. In alternativa, eseguire la migrazione a Istanza gestita di SQL di Azure, che supporta un numero limitato di flag di traccia globali o SQL Server nelle Macchine virtuali di Azure.
Per altre informazioni, vedere Risoluzione delle differenze di Transact-SQL durante la migrazione al database SQL.
Autenticazione di Windows
Titolo: gli utenti del database mappati con autenticazione di Windows (sicurezza integrata) non sono supportati in database SQL di Azure.
Categoria: avviso
Descrizione
Il database SQL di Azure supporta due tipi di autenticazione:
- Autenticazione SQL: usa nome utente e password
- Autenticazione con Microsoft Entra: usa identità gestite da Microsoft Entra ID (in precedenza Azure Active Directory) ed è supportato per domini gestiti e integrati.
Gli utenti del database mappati con autenticazione di Windows (sicurezza integrata) non sono supportati in database SQL di Azure.
Consiglio
Eseguire la federazione dell'istanza locale di Active Directory con Microsoft Entra ID. L'identità di Windows può quindi essere sostituita con le identità Microsoft Entra equivalenti. In alternativa, eseguire la migrazione di SQL Server su VM di Azure.
Per altre informazioni, vedere: Capacità di sicurezza del database SQL.
xp_cmdshell
Titolo: xp_cmdshell non è supportato nel database SQL di Azure.
Categoria: problema
Descrizione
xp_cmdshell
, che genera una shell dei comandi di Windows e trasmette una stringa per l'esecuzione, non è supportata in database SQL di Azure.
Consiglio
Esaminare la sezione relativa agli oggetti interessati in Azure Migrate per visualizzare tutti gli oggetti usando xp_cmdshell
e valutare se è possibile rimuovere il riferimento a xp_cmdshell
o l'oggetto interessato. Prendere in considerazione anche l'esplorazione di Automazione di Azure che offre un servizio di automazione e configurazione basato sul cloud. In alternativa, eseguire la migrazione di SQL Server su VM di Azure.
Contenuto correlato
- Guida alla migrazione: SQL Server al database SQL di Azure
- Servizi e strumenti disponibili per gli scenari di migrazione dei dati
- Informazioni sul database SQL di Azure
- Calcolatore del costo totale di proprietà di Azure
- Cloud Adoption Framework per Azure
- Procedure consigliate per la determinazione dei costi e il ridimensionamento dei carichi di lavoro migrati in Azure
- Toolkit per la migrazione dell'accesso ai dati (anteprima)
- Panoramica di Database Experimentation Assistant