Risoluzione delle differenze di Transact-SQL durante la migrazione al database SQLResolving Transact-SQL differences during migration to SQL Database

Durante la migrazione del database da SQL Server ad Azure SQL Server, si potrebbe scoprire che il database richiede alcune operazioni di riprogettazione prima di poter eseguire la migrazione di SQL Server.When migrating your database from SQL Server to Azure SQL Server, you may discover that your database requires some re-engineering before the SQL Server can be migrated. Questo articolo offre indicazioni utili per eseguire la riprogettazione e capire i motivi che la rendono necessaria.This article provides guidance to assist you in both performing this re-engineering and understanding the underlying reasons why the re-engineering is necessary. Per rilevare le incompatibilità, usare Data Migration Assistant (DMA).To detect incompatibilities, use the Data Migration Assistant (DMA).

PanoramicaOverview

La maggior parte delle funzionalità Transact-SQL usate dalle applicazioni è supportata in Microsoft SQL Server e nel database SQL di Azure.Most Transact-SQL features that applications use are fully supported in both Microsoft SQL Server and Azure SQL Database. Ad esempio, i componenti SQL principali, come tipi di dati, operatori, funzioni di stringa, funzioni aritmetiche, logiche e del cursore funzionano allo stesso modo in SQL Server e nel database SQL.For example, the core SQL components such as data types, operators, string, arithmetic, logical, and cursor functions, work identically in SQL Server and SQL Database. T-SQL presenta, tuttavia, alcune differenze negli elementi DDL (Data Definition Language) e DML (Data Manipulation Language), di conseguenza alcune istruzioni e query T-SQL sono supportate solo in parte (questo verrà descritto più avanti in questo articolo).There are, however, a few T-SQL differences in DDL (data-definition language) and DML (data manipulation language) elements resulting in T-SQL statements and queries that are only partially supported (which we discuss later in this article).

Inoltre, alcune funzionalità e sintassi non sono affatto supportate, perché il database SQL di Azure è progettato in modo da isolare le funzionalità dalle dipendenze nel database master e nel sistema operativo.In addition, there are some features and syntax that is not supported at all because Azure SQL Database is designed to isolate features from dependencies on the master database and the operating system. Di conseguenza, la maggior parte delle attività a livello di server non è appropriata al database SQL.As such, most server-level activities are inappropriate for SQL Database. Le istruzioni T-SQL non sono disponibili se configurano opzioni a livello di server e componenti del sistema operativo o se specificano una configurazione del file system.T-SQL statements and options are not available if they configure server-level options, operating system components, or specify file system configuration. Quando sono necessarie tali funzionalità, spesso è disponibile un'alternativa appropriata dal database SQL o da un'altra funzionalità o un altro servizio di Azure.When such capabilities are required, an appropriate alternative is often available in some other way from SQL Database or from another Azure feature or service.

Ad esempio, la disponibilità elevata è integrata in Azure, quindi non è necessaria la configurazione Always On (anche se è possibile configurare la replica geografica attiva per un ripristino più rapido in caso di emergenza).For example, high availability is built into Azure, so configuring Always On is not necessary (although you may want to configure active geo-replication for faster recovery in the event of a disaster). Di conseguenza, le istruzioni T-SQL relative ai gruppi di disponibilità non sono supportate dal database SQL, come le viste a gestione dinamica correlate a Always On.So, T-SQL statements related to availability groups are not supported by SQL Database, and the dynamic management views related to Always On are also not supported.

Per un elenco delle funzionalità supportate e non supportate dal database SQL, vedere Confronto fra le funzionalità del database SQL di Azure.For a list of the features that are supported and unsupported by SQL Database, see Azure SQL Database feature comparison. L'elenco in questa pagina integra le linee guida e l'articolo sulle funzionalità e si concentra sulle istruzioni Transact-SQL.The list on this page supplements that guidelines and features article, and focuses on Transact-SQL statements.

Istruzioni di sintassi Transact-SQL con differenze parzialiTransact-SQL syntax statements with partial differences

Sono disponibili le istruzioni DDL (data definition language) di base, tuttavia alcune istruzioni DDL contengono estensioni relative al posizionamento del disco e a funzionalità non supportate.The core DDL (data definition language) statements are available, but some DDL statements have extensions related to disk placement and unsupported features.

  • Le istruzioni CREATE e ALTER DATABASE offrono numerose opzioni.CREATE and ALTER DATABASE statements have over three dozen options. Le istruzioni includono le opzioni di posizionamento dei file, FILESTREAM e service broker che si applicano solo a SQL Server.The statements include file placement, FILESTREAM, and service broker options that only apply to SQL Server. Questo potrebbe non essere rilevante se si creano database prima di eseguire la migrazione, ma se si esegue la migrazione di codice T-SQL che crea i database è necessario confrontare CREATE DATABASE (database SQL di Azure) con la sintassi di SQL Server in CREATE DATABASE (Transact-SQL di SQL Server) per assicurarsi che tutte le opzioni in uso siano supportate.This may not matter if you create databases before you migrate, but if you are migrating T-SQL code that creates databases you should compare CREATE DATABASE (Azure SQL Database) with the SQL Server syntax at CREATE DATABASE (SQL Server Transact-SQL) to make sure all the options you use are supported. CREATE DATABASE per il database SQL di Azure ha anche opzioni di obiettivo di servizio e di scalabilità elastica che si applicano solo al database SQL.CREATE DATABASE for Azure SQL Database also has service objective and elastic scale options that apply only to SQL Database.
  • Le istruzioni CREATE e ALTER TABLE hanno opzioni FileTable che non possono essere usate nel database SQL perché FILESTREAM non è supportato.The CREATE and ALTER TABLE statements have FileTable options that cannot be used on SQL Database because FILESTREAM is not supported.
  • Le istruzioni di accesso CREATE e ALTER sono supportate, ma il database SQL non offre tutte le opzioni.CREATE and ALTER login statements are supported but SQL Database does not offer all the options. Per aumentare la portabilità del database, il database SQL invita a usare utenti contenuti nel database anziché gli account di accesso tutte le volte che è possibile.To make your database more portable, SQL Database encourages using contained database users instead of logins whenever possible. Per altre informazioni, vedere CREATE/ALTER LOGIN e Controllo e concessione dell'accesso al database.For more information, see CREATE/ALTER LOGIN and Controlling and granting database access.

Sintassi di Transact-SQL non supportata nel database SQL di AzureTransact-SQL syntax not supported in Azure SQL Database

Oltre alle istruzioni Transact-SQL correlate alle funzioni non supportate descritte in Confronto fra le funzionalità del database SQL di Azure, non sono supportati le istruzioni e i gruppi di istruzioni seguenti.In addition to Transact-SQL statements related to the unsupported features described in Azure SQL Database feature comparison, the following statements and groups of statements, are not supported. Di conseguenza, se il database di cui deve essere eseguita la migrazione usa le funzionalità seguenti, è necessario riprogettare T-SQL in modo da eliminare queste funzionalità e istruzioni T-SQL.As such, if your database to be migrated is using any of the following features, re-engineer your T-SQL to eliminate these T-SQL features and statements.

  • Regole di confronto di oggetti di sistemaCollation of system objects
  • Connessione correlata: istruzioni di endpoint.Connection related: Endpoint statements. Database SQL non supporta l'autenticazione di Windows, ma supporta l'analoga autenticazione di Azure Active Directory.SQL Database does not support Windows authentication, but does support the similar Azure Active Directory authentication. Alcuni tipi di autenticazione richiedono l'ultima versione di SQL Server Management Studio.Some authentication types require the latest version of SSMS. Per ulteriori informazioni, vedere Connessione al database SQL oppure a SQL Data Warehouse con l'autenticazione di Azure Active Directory.For more information, see Connecting to SQL Database or SQL Data Warehouse By Using Azure Active Directory Authentication.
  • Query tra database mediante nomi composti da tre o quattro parti.Cross database queries using three or four part names. Le query tra database di sola lettura sono supportate mediante query di database elastici.(Read-only cross-database queries are supported by using elastic database query.)
  • Concatenamento della proprietà tra database, impostazione TRUSTWORTHYCross database ownership chaining, TRUSTWORTHY setting
  • EXECUTE AS LOGIN Usare invece 'EXECUTE AS USER'.EXECUTE AS LOGIN Use 'EXECUTE AS USER' instead.
  • La crittografia è supportata, ad eccezione della gestione delle chiavi estendibileEncryption is supported except for extensible key management
  • Gestione degli eventi: notifiche degli eventi, notifiche di queryEventing: Events, event notifications, query notifications
  • Posizionamento dei file: sintassi relativa al posizionamento dei file di database, dimensioni e file di database che vengono gestiti automaticamente da Microsoft Azure.File placement: Syntax related to database file placement, size, and database files that are automatically managed by Microsoft Azure.
  • Disponibilità elevata: sintassi relativa a disponibilità elevata, gestita tramite l'account Microsoft Azure.High availability: Syntax related to high availability, which is managed through your Microsoft Azure account. Questa include la sintassi per backup, ripristino, AlwaysOn, mirroring del database, log shipping e modalità di ripristino.This includes syntax for backup, restore, Always On, database mirroring, log shipping, recovery modes.
  • Agente di lettura log: sintassi che si basa sull'agente di lettura log, non disponibile nel database SQL: replica push, acquisizione dei dati modificati.Log reader: Syntax that relies upon the log reader, which is not available on SQL Database: Push Replication, Change Data Capture. Il database SQL può essere iscritto a un articolo di replica push.SQL Database can be a subscriber of a push replication article.
  • Funzioni: fn_get_sql, fn_virtualfilestats, fn_virtualservernodesFunctions: fn_get_sql, fn_virtualfilestats, fn_virtualservernodes
  • Hardware: sintassi delle impostazioni del server relative all'hardware: memoria, thread di lavoro, affinità di CPU, flag di traccia.Hardware: Syntax related to hardware-related server settings: such as memory, worker threads, CPU affinity, trace flags. In alternativa usare i livelli di servizio.Use service levels instead.
  • KILL STATS JOB
  • OPENQUERY, OPENROWSET, OPENDATASOURCE e nomi in quattro partiOPENQUERY, OPENROWSET, OPENDATASOURCE, and four-part names
  • .NET framework: integrazione CLR con SQL Server.NET Framework: CLR integration with SQL Server
  • Ricerca semanticaSemantic search
  • Credenziali del server: usare le credenziali con ambito database.Server credentials: Use database scoped credentials instead.
  • Elementi a livello di server: ruoli del server, sys.login_token.Server-level items: Server roles, sys.login_token. GRANT, REVOKE e DENY delle autorizzazioni a livello di server non sono disponibili anche se alcune vengono sostituite da autorizzazioni a livello di database.GRANT, REVOKE, and DENY of server level permissions are not available though some are replaced by database-level permissions. Alcune viste a gestione dinamica a livello di server dispongono di una vista a gestione dinamica equivalente a livello di database.Some useful server-level DMVs have equivalent database-level DMVs.
  • SET REMOTE_PROC_TRANSACTIONS
  • SHUTDOWN
  • sp_addmessage
  • Opzioni sp_configure e RECONFIGURE.sp_configure options and RECONFIGURE. Con ALTER DATABASE SCOPED CONFIGURATIONsono disponibili alcune opzioni.Some options are available using ALTER DATABASE SCOPED CONFIGURATION.
  • sp_helpuser
  • sp_migrate_user_to_contained
  • SQL Server Agent: sintassi che si basa su SQL Server Agent o sul database MSDB: avvisi, operatori, server di gestione centrale.SQL Server Agent: Syntax that relies upon the SQL Server Agent or the MSDB database: alerts, operators, central management servers. Usare invece gli script, ad esempio Azure PowerShell.Use scripting, such as Azure PowerShell instead.
  • SQL Server audit: usare il controllo del database SQL.SQL Server audit: Use SQL Database auditing instead.
  • Traccia SQL ServerSQL Server trace
  • Flag di traccia: alcuni elementi dei flag di traccia sono stati spostati in modalità di compatibilità.Trace flags: Some trace flag items have been moved to compatibility modes.
  • Debug di Transact-SQLTransact-SQL debugging
  • Trigger: Con ambito Server o trigger di accessoTriggers: Server-scoped or logon triggers
  • Istruzione USE: per modificare il contesto del database in un database diverso è necessario creare una nuova connessione al nuovo database.USE statement: To change the database context to a different database, you must make a new connection to the new database.

Riferimento completo di Transact-SQLFull Transact-SQL reference

Per ulteriori informazioni sulla grammatica Transact-SQL, uso ed esempi, vedere riferimento a Transact-SQL (motore di Database) nella documentazione Online di SQL Server.For more information about Transact-SQL grammar, usage, and examples, see Transact-SQL Reference (Database Engine) in SQL Server Books Online.

Informazioni sui tag "Si applica a"About the "Applies to" tags

Le informazioni di riferimento su Transact-SQL includono articoli correlati alle versioni di SQL Server dalla 2008 a quella attuale.The Transact-SQL reference includes articles related to SQL Server versions 2008 to the present. Sotto il titolo dell'articolo è presente una barra di icone in cui sono elencate le quattro piattaforme SQL Server e la relativa applicabilità.Below the article title there is an icon bar, listing the four SQL Server platforms, and indicating applicability. Ad esempio, i gruppi di disponibilità sono stati introdotti in SQL Server 2012.For example, availability groups were introduced in SQL Server 2012. L'articolo CREATE AVAILABILTY GROUP indica che l'istruzione si applica a SQL Server (a partire dalla versione 2012).The CREATE AVAILABILTY GROUP article indicates that the statement applies to SQL Server (starting with 2012). L'istruzione non si applica a SQL Server 2008, SQL Server 2008 R2, Database SQL di Azure, Azure SQL Data Warehouse o Parallel Data Warehouse.The statement does not apply to SQL Server 2008, SQL Server 2008 R2, Azure SQL Database, Azure SQL Data Warehouse, or Parallel Data Warehouse.

In alcuni casi, il tema generale di un articolo può essere usato in un prodotto, ma esistono differenze minime tra prodotti.In some cases, the general subject of a article can be used in a product, but there are minor differences between products. Le differenze sono indicate in punti centrali nell'articolo come appropriato.The differences are indicated at midpoints in the article as appropriate. In alcuni casi, il tema generale di un articolo può essere usato in un prodotto, ma esistono differenze minime tra prodotti.In some cases, the general subject of a article can be used in a product, but there are minor differences between products. Le differenze sono indicate in punti centrali nell'articolo come appropriato.The differences are indicated at midpoints in the article as appropriate. Ad esempio l'articolo CREATE TRIGGER è disponibile nel database SQL.For example the CREATE TRIGGER article is available in SQL Database. Tuttavia, l'opzione ALL SERVER per i trigger a livello di server indica che i trigger a livello di server non possono essere usati nel database SQL.But the ALL SERVER option for server-level triggers, indicates that server-level triggers cannot be used in SQL Database. Usare i trigger a livello di database.Use database-level triggers instead.

Passaggi successiviNext steps

Per un elenco delle funzionalità supportate e non supportate dal database SQL, vedere Confronto fra le funzionalità del database SQL di Azure.For a list of the features that are supported and unsupported by SQL Database, see Azure SQL Database feature comparison. L'elenco in questa pagina integra le linee guida e l'articolo sulle funzionalità e si concentra sulle istruzioni Transact-SQL.The list on this page supplements that guidelines and features article, and focuses on Transact-SQL statements.