Condividi tramite


Differenze di T-SQL tra SQL Server e Istanza gestita di SQL di Azure

Si applica a: Istanza gestita di SQL di Azure SQL

Questo articolo riassume e spiega le differenze di sintassi e comportamento tra Istanza gestita di SQL di Azure e SQL Server.

Istanza gestita di SQL offre una compatibilità elevata con il motore di database di SQL Server e la maggior parte delle funzionalità è supportata in un’istanza gestita di SQL.

Diagramma che mostra la semplice migrazione da SQL Server.

Esistono alcune limitazioni di PaaS introdotte nell'istanza gestita di SQL e alcune modifiche funzionali rispetto a SQL Server. Le differenze sono suddivise nelle seguenti categorie:

La maggior parte di queste funzionalità sono vincoli di architettura e rappresentano le funzionalità del servizio.

I problemi noti temporanei individuati nell'istanza gestita di SQL e che verranno risolti in futuro sono descritti nella pagina relativa alle Novità.

Nota

Microsoft Entra ID era precedentemente conosciuto come Azure Active Directory (Azure AD).

Disponibilità

Gruppi di disponibilità Always On

La disponibilità elevata è incorporata nell'istanza gestita di SQL e non può essere controllata dagli utenti. Le istruzioni seguenti non sono supportate:

Backup

L’Istanza gestita di SQL di Azure ha backup automatici in modo da consentire agli utenti di creare backup COPY_ONLY di database completi. I backup differenziali, del log e di snapshot di file non sono supportati.

  • Con un'istanza gestita di SQL è possibile eseguire il backup di un database dell'istanza solo in un account di archiviazione BLOB di Azure:
    • È supportato solo BACKUP TO URL.
    • FILE, TAPE e i dispositivi di backup non sono supportati.
  • La maggior parte delle opzioni WITH generali è supportata.
    • COPY_ONLY è obbligatorio.
    • FILE_SNAPSHOT e CREDENTIAL non sono supportati.
    • Le opzioni nastro REWIND, NOREWIND, UNLOAD e NOUNLOAD non sono supportate.
    • Le opzioni specifiche dei log NORECOVERY, STANDBY e NO_TRUNCATE non sono supportate.

Limitazioni:

  • Con un'istanza gestita di SQL è possibile eseguire il backup di un database dell'istanza su un supporto di backup con un massimo di 32 stripe, sufficienti per database fino a 4 TB se si usa la compressione del backup.

  • Non è possibile eseguire BACKUP DATABASE ... WITH COPY_ONLY in un database crittografato con TDE (Transparent Data Encryption) gestita dal servizio. La crittografia TDE gestita dal servizio impone la crittografia dei backup con una chiave TDE interna. La chiave non può essere esportata, quindi non sarà possibile ripristinare il backup. Usare i backup automatici e il ripristino temporizzato oppure usare TDE gestita dal cliente (BYOK). È anche possibile disabilitare la crittografia nel database.

  • I backup nativi eseguiti in un Istanza gestita di SQL possono essere ripristinati solo in un'istanza di SQL Server 2022. Ciò è dovuto al fatto che Istanza gestita di SQL ha una versione del database interna superiore rispetto ad altre versioni di SQL Server. Per altre informazioni, consultare Ripristino di un backup del database di un'istanza gestita di SQL in SQL Server 2022.

  • Per eseguire il backup o il ripristino di un database da e verso un'archiviazione di Azure, è possibile eseguire l'autenticazione usando l'identità gestita o la firma di accesso condiviso (SAS) che è un URI che concede diritti di accesso limitati alle risorse di Archiviazione di Azure Maggiori informazioni. L'uso delle chiavi di accesso per questi scenari non è supportato.

  • Le dimensioni massime delle stripe di backup tramite il comando BACKUP in un'istanza gestita di SQL sono di 195 GB, ovvero le dimensioni massime del BLOB. Aumentare il numero di strisce nel comando di backup per ridurre la dimensione delle singole strisce e rimanere entro questo limite.

    Suggerimento

    Per ovviare a questa limitazione, quando si esegue il backup di un database da SQL Server in un ambiente locale o in una macchina virtuale, è possibile:

    • Eseguire il backup in DISK anziché in URL.
    • Caricare i file di backup nell'archiviazione BLOB.
    • Eseguire il ripristino nell'istanza gestita di SQL.

    Il comando Restore in un'istanza gestita di SQL supporta dimensioni di BLOB maggiori nei file di backup, perché per l'archiviazione dei file di backup caricati viene usato un tipo di BLOB diverso.

Per informazioni sui backup con T-SQL, vedere BACKUP.

Sicurezza

Eseguire i controlli

Le differenze principali tra il controllo in Microsoft Azure SQL e in SQL Server sono:

  • In Istanza gestita di SQL, il controllo opera a livello di server. I file di log .xel vengono archiviati nell'archiviazione Blob di Azure.
  • Nel database SQL di Azure, il controllo opera a livello del database. I file di log .xel vengono archiviati nell'archiviazione Blob di Azure.
  • In SQL Server locale o nelle macchine virtuali, il controllo funziona a livello di server. Gli eventi vengono archiviati nel file system o nei registri eventi di Windows.

Il controllo XEvent in Istanza gestita di SQL supporta le destinazioni di Archiviazione BLOB di Azure. I log di file e di Windows non sono supportati.

Le principali differenze nella sintassi CREATE AUDIT per il controllo in Archivio BLOB di Azure sono le seguenti:

  • È disponibile una nuova sintassi TO URL per specificare l'URL del contenitore di archiviazione BLOB di Azure in cui vengono inseriti i file .xel.
  • La sintassi TO FILE non è supportata perché un'istanza gestita di SQL non può accedere alle condivisioni file di Windows.

Per altre informazioni, vedi:

Certificati

Un'istanza gestita di SQL non può accedere a condivisioni file e cartelle di Windows e pertanto vengono applicati i vincoli seguenti:

  • La sintassi CREATE FROM/BACKUP TO relativa ai file non è supportata per i certificati.
  • La sintassi CREATE/BACKUP da FILE/ASSEMBLY per i certificati non è supportata. I file di chiavi private non possono essere usati.

Vedere CREATE CERTIFICATE e BACKUP CERTIFICATE.

Soluzione alternativa: anziché creare un backup del certificato e ripristinare il backup, ottenere il contenuto binario e la chiave privata del certificato, archiviarlo come file con estensione SQL e creare il certificato dal file binario:

CREATE CERTIFICATE
   FROM BINARY = asn_encoded_certificate
WITH PRIVATE KEY (<private_key_options>);

Credenziale

Sono supportate le identità gestite, Azure Key Vault e le identità SHARED ACCESS SIGNATURE. Gli utenti di Windows non sono supportati.

Vedere CREATE CREDENTIAL e ALTER CREDENTIAL.

Provider del servizio di crittografia

Istanza gestita di SQL non può accedere ai file e pertanto non è possibile creare provider del servizio di crittografia:

Account di accesso e utenti

  • Gli account di accesso SQL creati con FROM CERTIFICATE, FROM ASYMMETRIC KEY e FROM SID sono supportati. Vedere CREATE LOGIN. Le entità di sicurezza del server (account di accesso) vengono create a livello di server e gli utenti (entità di database) vengono creati a livello di database. Sono supportati gli account di accesso Microsoft Entra creati con la sintassi CREATE LOGIN e gli utenti di Microsoft Entra creati con la sintassi CREATE USER FROM LOGIN. Quando si crea un utente e si specifica FROM LOGIN, l'utente è associato all'account di accesso e eredita i ruoli del server e le autorizzazioni assegnati.

    Istanza gestita di SQL supporta la creazione di utenti di database indipendenti basati sulle identità di Microsoft Entra con la sintassi CREATE USER [AADUser/AAD group] FROM EXTERNAL PROVIDER. Gli utenti creati in questo modo non sono associati alle entità di sicurezza del server, anche se nel database master esiste un'entità server con lo stesso nome.

  • Gli account di accesso di Windows creati con la sintassi CREATE LOGIN ... FROM WINDOWS non sono supportati. Usare account di accesso e utenti di Microsoft Entra.

  • L'amministratore di Microsoft Entra per l'istanza dispone di privilegi di amministratore senza restrizioni.

  • Alcune funzionalità non supportano l'uso degli account di accesso di Microsoft Entra nelle interazioni tra istanze, ma solo all'interno di una singola Istanza gestita di SQL, ad esempio la replica di SQL Server. La funzionalità server collegato supporta l'autenticazione tra istanze usando le entità server (account di accesso) di Microsoft Entra.

  • L'impostazione degli account di accesso di Microsoft Entra mappati a un gruppo di Microsoft Entra come proprietario del database non è supportata. Un membro del gruppo Microsoft Entra può essere un proprietario del database, anche se l'account di accesso non è stato creato nel database.

  • Le rappresentazione delle entità di livello server di Microsoft Entra con altre entità di Microsoft Entra è supportata, come con la clausola EXECUTE AS. Le limitazioni di EXECUTE AS sono:

    • EXECUTE AS USER non è supportata per gli utenti di Microsoft Entra quando il nome è diverso dal nome di accesso. Un esempio è quando l'utente viene creato tramite la sintassi CREATE USER [myAadUser] FROM LOGIN [john@contoso.com] e la rappresentazione viene tentata tramite EXEC AS USER = myAadUser. Quando si crea un USER da un account di accesso di Microsoft Entra, specificare per user_name lo stesso valore di login_name indicato in LOGIN.

    • Solo gli account di accesso di livello SQL Server inclusi nel ruolo sysadmin possono eseguire le operazioni seguenti destinate a entità di Microsoft Entra:

      • EXECUTE AS USER
      • EXECUTE AS LOGIN
    • Per rappresentare un utente con l'istruzione EXECUTE AS, l'utente deve essere mappato direttamente all'account di accesso di Microsoft Entra. Gli utenti membri dei gruppi di Microsoft Entra mappati nelle entità server di Microsoft Entra non possono essere rappresentati in modo efficace con l'istruzione EXECUTE AS, anche se il chiamante dispone delle autorizzazioni di rappresentazione per il nome utente specificato.

  • L'esportazione/importazione di database tramite i file BACPAC è supportata per gli utenti di Microsoft Entra nell'istanza gestita di SQL tramite SSMS V18.4 o versioni successive oppure SqLPackage.

    • Le configurazioni seguenti sono supportate con un file BACPAC di database:
      • Esportare/importare un database tra diverse istanze gestite all'interno dello stesso dominio di Microsoft Entra.
      • Esportare un database da Istanza gestita di SQL e importarlo nel database all'interno dello stesso dominio di Microsoft Entra.
      • Esportare un database dal database SQL e importarlo nell'istanza gestita di SQL all'interno dello stesso dominio di Microsoft Entra.
      • Esportare un database da un'istanza gestita di SQL e importarlo in SQL Server (versione 2012 o successiva).
        • In questa configurazione tutti gli utenti di Microsoft Entra vengono creati come entità di database SQL server (utenti) senza account di accesso. Il tipo di utenti è SQL e è visibile come SQL_USER in sys.database_principals. Le autorizzazioni e i ruoli rimangono nei metadati del database SQL Server e possono essere usati per la rappresentazione. Tuttavia, non possono essere usati per registrarsi a SQL Server usando le proprie credenziali.
  • Solo l'account di accesso dell'entità di livello server, creato dal processo di provisioning dell'istanza gestita di SQL, i membri dei ruoli server come securityadmin o sysadmin, oppure altri account di accesso con autorizzazione ALTER ANY LOGIN a livello di server possono creare entità server (account di accesso) di Microsoft Entra nel database master per l'istanza gestita di SQL.

  • Agli account di accesso basati sull'autenticazione SQL deve essere assegnato il ruolo sysadmin per creare account di accesso per le identità di Microsoft Entra.

  • L'account di accesso deve essere membro dello stesso tenant di Microsoft Entra in cui è ospitata l’Istanza gestita di SQL di Azure.

  • Le entità server (account di accesso) di Microsoft Entra sono visibili in Esplora oggetti a partire da SQL Server Management Studio 18.0 preview 5.

  • Un'entità server con livello di accesso sysadmin viene creata automaticamente per l'amministratore di Microsoft Entra dopo l'abilitazione in un'istanza.

  • Durante l'autenticazione, per risolvere l'entità che esegue l'autenticazione viene applicata la sequenza seguente:

    1. Se l'account Microsoft Entra è mappato direttamente a un login Microsoft Entra, presente in sys.server_principals come tipo "E", concedere l'accesso e applicare le autorizzazioni di tale account di accesso.
    2. Se l'account Microsoft Entra è membro di un gruppo di cui è stato eseguito il mapping a un account di accesso di Microsoft Entra, presente in sys.server_principals come tipo "X", concedere l'accesso e applicare le autorizzazioni di tale account di accesso.
    3. Se l'account Microsoft Entra esiste come mappato direttamente a un utente di Microsoft Entra in un database, presente in sys.database_principals come tipo "E", concedere l'accesso e applicare le autorizzazioni dell'utente del database Microsoft Entra.
    4. Se l'account Microsoft Entra è membro di un gruppo Microsoft Entra mappato a un utente di Microsoft Entra in un database, presente sys.database_principals come tipo "X", concedere l'accesso e applicare le autorizzazioni dell'utente del gruppo Microsoft Entra.

Chiave del servizio e chiave master del servizio

Impostazione

Estensione del pool di buffer

Regole di confronto

Le regole di confronto di istanza predefinita sono SQL_Latin1_General_CP1_CI_AS e possono essere specificate come un parametro di creazione. Vedere Regole di confronto.

Livelli di compatibilità

  • I livelli di compatibilità supportati sono: 100, 110, 120, 130, 140, 150 e 160.
  • I livelli di compatibilità inferiori a 100 non sono supportati.
  • Il livello di compatibilità predefinito per i nuovi database è 150. Per i database ripristinati, il livello di compatibilità rimane invariato se era uguale o superiore a 100.

Vedere Livello di compatibilità ALTER DATABASE.

Mirroring del database

Il mirroring del database non è supportato.

  • Le opzioni ALTER DATABASE SET PARTNER e SET WITNESS non sono supportate.
  • CREATE ENDPOINT … FOR DATABASE_MIRRORING non è supportata.

Per altre informazioni, vedere ALTER DATABASE SET PARTNER e SET WITNESS e CREATE ENDPOINT … FOR DATABASE_MIRRORING.

Opzioni di database

  • I file di log multipli non sono supportati.
  • Gli oggetti in memoria non sono supportati nel livello di servizio per utilizzo generico.
  • È previsto un limite di 280 file per ogni istanza per Utilizzo generico, che implica un massimo di 280 file per database. I file di dati e i file di log nel livello Utilizzo generico vengono conteggiati per questo limite. Il livello Business Critical supporta 32.767 file per database.
  • I database non possono contenere filegroup che contengono a loro volta dati FILESTREAM. Se .bak contiene dati FILESTREAM, il ripristino non riesce.
  • Ogni file viene inserito in Archiviazione BLOB di Azure. L'I/O e la velocità effettiva per file dipendono dalle dimensioni di ogni singolo file.

Istruzione CREATE DATABASE

Vengono applicate le limitazioni seguenti a CREATE DATABASE:

  • Non possono essere definiti file e filegroup.

  • Un file e un filegroup ottimizzati per la memoria vengono aggiunti automaticamente e vengono chiamati XTP.

  • L'opzione CONTAINMENT non è supportata.

  • Le opzioni WITH non sono supportate.

    Suggerimento

    Come soluzione alternativa, usare ALTER DATABASE dopo CREATE DATABASE per impostare le opzioni di database per aggiungere file o per impostare l'indipendenza.

  • L'opzione FOR ATTACH non è supportata.

  • L'opzione AS SNAPSHOT OF non è supportata.

Per altre informazioni, vedere CREATE DATABASE.

ALTER DATABASE - istruzione

Alcune proprietà di file non possono essere impostate o modificate:

  • Non è possibile specificare un percorso file nell'istruzione T-SQL ALTER DATABASE ADD FILE (FILENAME='path'). Rimuovere FILENAME dallo script in quanto Istanza gestita di SQL inserisce i file automaticamente.
  • Non è possibile modificare un nome file con l'istruzione ALTER DATABASE.
  • La modifica del file o del filegroup XTP non è consentita.

Le opzioni seguenti sono attive per impostazione predefinita e non possono essere modificate:

  • MULTI_USER
  • ENABLE_BROKER
  • AUTO_CLOSE OFF

Le opzioni seguenti non possono essere modificate:

  • AUTO_CLOSE
  • AUTOMATIC_TUNING(CREATE_INDEX=ON|OFF)
  • AUTOMATIC_TUNING(DROP_INDEX=ON|OFF)
  • DISABLE_BROKER
  • EMERGENCY
  • ENABLE_BROKER
  • FILESTREAM
  • HADR
  • NEW_BROKER
  • OFFLINE
  • PAGE_VERIFY
  • PARTNER
  • READ_ONLY
  • RECOVERY BULK_LOGGED
  • RECOVERY_SIMPLE
  • REMOTE_DATA_ARCHIVE
  • RESTRICTED_USER
  • SINGLE_USER
  • WITNESS

Alcune istruzioni ALTER DATABASE (ad esempio SET CONTAINMENT) potrebbero avere esito temporaneamente negativo, ad esempio durante il backup automatico del database o subito dopo la creazione di un database. In questo caso è necessario rieseguire l’istruzione ALTER DATABASE. Per altre informazioni sui messaggi di errore correlati, vedere la sezione Osservazioni.

Per altre informazioni, vedere ALTER DATABASE.

SQL Server Agent

  • L'abilitazione e la disabilitazione di SQL Server Agent non sono attualmente supportate nell'istanza gestita di SQL. SQL Agent è sempre in esecuzione.
  • Il trigger di pianificazione del processo in base a una CPU inattiva non è supportato.
  • Le impostazioni di SQL Server Agent sono di sola lettura. La procedurasp_set_agent_properties non è supportata nell'istanza gestita di SQL.
  • Processi
    • I passaggi dei processi T-SQL sono supportati.
    • I seguenti processi di replica sono supportati:
      • Lettore di log delle transazioni
      • Snapshot
      • Database di distribuzione
    • I passaggi dei processi SSIS sono supportati.
    • Altri tipi di passaggi dei processi non sono attualmente supportati:
      • Il passaggio del processo di replica di tipo merge non è supportato.
      • La lettura della coda non è supportata.
      • La shell dei comandi non è ancora supportata.
    • Le istanze gestite di SQL non possono accedere a risorse esterne, ad esempio a condivisioni di rete tramite robocopy.
    • SQL Server Analysis Services non è supportato.
  • Le notifiche sono supportate in modo parziale.
  • Sono supportate le notifiche tramite posta elettronica, anche se è necessario configurare un profilo di Posta elettronica database. SQL Server Agent può usare un solo profilo di Posta elettronica database, che deve essere denominato AzureManagedInstance_dbmail_profile.
    • Pager non è supportato.
    • NetSend non è supportato.
    • Gli avvisi non sono ancora supportati.
    • I proxy non sono supportati.
  • EventLog non è supportato.
  • L'utente deve essere mappato direttamente all'account di accesso del server Microsoft Entra per creare, modificare o eseguire processi di SQL Agent. Gli utenti di cui non è stato eseguito il mapping diretto, ad esempio gli utenti che appartengono a un gruppo Microsoft Entra che dispone dei diritti per creare, modificare o eseguire processi di SQL Agent, non potranno eseguire efficacemente tali azioni. Ciò è dovuto alle limitazioni di rappresentazione di Istanza gestita di SQL e di EXECUTE AS.
  • La funzionalità Amministrazione multiserver per i processi master/target (MSX/TSX) non è supportata.

Per informazioni su SQL Server Agent, vedere SQL Server Agent.

Tabelle

I tipi di tabella seguenti non sono supportati:

Per informazioni sulla creazione e la modifica di tabelle, vedere CREATE TABLE e ALTER TABLE.

Funzionalità

BULK INSERT / OPENROWSET

Un'istanza gestita di SQL non può accedere a condivisioni file e cartelle di Windows e pertanto i file devono essere importati da un'archiviazione BLOB di Azure:

  • DATASOURCE è obbligatorio nel comando BULK INSERT durante l'importazione dei file da un'archiviazione BLOB di Azure. Vedere BULK INSERT.
  • DATASOURCE è obbligatorio nella funzione OPENROWSET quando si legge il contenuto di un file da un'archiviazione BLOB di Azure. Vedere OPENROWSET.
  • OPENROWSET può essere usato per leggere i dati da database SQL di Azure, da istanze gestite di SQL o da istanze di SQL Server. Altre origini, ad esempio i database Oracle o i file di Excel, non sono supportate.

CLR

Un'istanza gestita di SQL non può accedere a condivisioni file e cartelle di Windows e pertanto vengono applicati i vincoli seguenti:

Posta elettronica database (db_mail)

  • sp_send_dbmail non può inviare allegati con il parametro @file_attachments. Il file system locale e le condivisioni esterne o l'archiviazione BLOB di Azure non sono accessibili da questa procedura.
  • Vedere i problemi noti correlati al parametro @query e all'autenticazione.

DBCC

Le istruzioni DBCC non documentate abilitate in SQL Server non sono supportate nelle istanze gestite di SQL.

  • È supportato solo un numero limitato di flag di traccia globali. Trace flags a livello di sessione non sono supportati. Vedere Flag di traccia.
  • DBCC TRACEOFF e DBCC TRACEON funzionano con il numero limitato di flag di traccia globali.
  • Non è possibile usare DBCC CHECKDB con le opzioni REPAIR_ALLOW_DATA_LOSS, REPAIR_FAST e REPAIR_REBUILD perché il database non può essere impostato in modalità SINGLE_USER - vedere le differenze di ALTER DATABASE. I potenziali danneggiamenti del database sono gestiti dal team di supporto di Azure. Contattare supporto di Azure in caso di danneggiamento del database.

Transazioni distribuite

Le transazioni distribuite basate su T-SQL e .NET tra istanze gestite sono generalmente disponibili. Altri scenari, ad esempio transazioni XA, transazioni distribuite tra istanze gestite e altri partecipanti e altro ancora, sono supportati con DTC per Istanza gestita di SQL di Azure, disponibile in anteprima pubblica.

Eventi estesi

Alcune destinazioni specifiche di Windows per gli eventi estesi (XEvent) non sono supportate:

Librerie esterne

Le librerie esterne In-database R e Python sono supportate nell’anteprima pubblica limitata. Si veda Servizi di Machine Learning in Istanza gestita di SQL di Azure (anteprima).

FILESTREAM e FileTable

  • I dati FILESTREAM non sono supportati.
  • Il database non può contenere filegroup con dati FILESTREAM.
  • FILETABLE non è supportata.
  • Le tabelle non possono contenere tipi FILESTREAM.
  • Le seguenti funzioni non sono supportate:
    • GetPathLocator()
    • GET_FILESTREAM_TRANSACTION_CONTEXT()
    • PathName()
    • GetFileNamespacePat)
    • FileTableRootPath()

Per altre informazioni, vedere FILESTREAM e FileTable.

La ricerca semantica non è supportata.

Server collegati

I server collegati in Istanza gestita di SQL supportano un numero limitato di destinazioni:

  • Le destinazioni supportate sono Istanza gestita di SQL, database SQL, Azure Synapse di SQL serverless e pool dedicati e istanze di SQL Server.
  • Le destinazioni non supportate sono file, Analysis Services e altri sistemi di gestione di database relazionali (RDBMS). Provare a usare l'importazione CSV nativa da Archiviazione BLOB di Azure usando BULK INSERT o OPENROWSET come alternativa per l'importazione di file o caricare file usando un pool SQL serverless in Azure Synapse Analytics.

Operazioni:

I server collegati in Istanza gestita di SQL di Azure supportano l'autenticazione SQL e l'autenticazione di Microsoft Entra.

PolyBase

La funzionalità di virtualizzazione dei dati di Istanza gestita di SQL di Azure consente di eseguire query Transact-SQL (T-SQL) su dati provenienti da file archiviati in Azure Data Lake Storage Gen2 o Archiviazione BLOB di Azure e combinarli con dati relazionali archiviati in locale usando join. Sono supportati direttamente i formati di file Parquet e di testo delimitato (CSV). Il formato di file JSON è supportato indirettamente specificando il formato di file CSV quando le query restituiscono ogni documento come riga separata. È possibile analizzare ulteriormente le righe usando JSON_VALUE e OPENJSON. Per informazioni generali su PolyBase, si veda PolyBase.

Inoltre, CREATE EXTERNAL TABLE AS SELECT (CETAS) consente di esportare dati dall'istanza gestita di SQL in un account di archiviazione esterno. È possibile usare CETAS per creare una tabella esterna sopra i file Parquet o CSV di Archiviazione BLOB di Azure o Azure Data Lake Storage (ADLS) Gen2. CETAS è inoltre in grado di esportare in parallelo i risultati di un'istruzione T-SQL SELECT nella tabella esterna che è stata creata.

Replica

  • Sono supportati i tipi di replica snapshot e bidirezionale. La replica di tipo merge, la replica peer-to-peer e le sottoscrizioni aggiornabili non sono supportate.
  • La replica transazionale è disponibile nell'istanza gestita di SQL con alcuni vincoli:
    • Tutti i tipi di partecipanti alla replica (server di pubblicazione, server di distribuzione, sottoscrittore pull e sottoscrittore push) possono essere inseriti in istanze gestite di SQL, ma il server di pubblicazione e il server di distribuzione devono trovarsi entrambi nel cloud o entrambi in locale.
    • Le istanze gestite di SQL possono comunicare con le versioni recenti di SQL Server. Per altre informazioni, si veda la matrice delle versioni supportate.
    • La replica transazionale presenta alcuni requisiti di rete aggiuntivi.

Per altre informazioni sulla configurazione della replica transazionale, vedere le esercitazioni seguenti:

Istruzione RESTORE

  • Sintassi supportata:
    • RESTORE DATABASE
    • RESTORE FILELISTONLY
    • RESTORE HEADERONLY
    • RESTORE LABELONLY
    • RESTORE VERIFYONLY
  • Sintassi non supportata:
    • RESTORE LOGONLY
    • RESTORE REWINDONLY
  • Origine:
    • FROM URL (archiviazione BLOB di Azure) è l'unica opzione supportata.
    • FROM DISK/TAPE/dispositivo di backup non è supportata.
    • I set di backup non sono supportati.
  • Le opzioni WITH non sono supportate. I tentativi di ripristino che comprendono WITH, come DIFFERENTIAL, STATS, REPLACE e così via, avranno esito negativo.

Un'operazione di ripristino del database è asincrona e riprovabile in Istanza gestita di SQL di Azure. È possibile che venga visualizzato un errore in SSMS se la connessione non riesce o scade il timeout. Istanza gestita di SQL di Azure continuerà a tentare di ripristinare il database in background. È possibile tenere traccia dello stato di avanzamento del ripristino usando le DMV sys.dm_exec_requests e sys.dm_operation_status.

Le opzioni di database seguenti sono impostate o sottoposte a override e non possono essere modificate in seguito:

  • NEW_BROKER se il broker non è abilitato nel file con estensione bak.
  • ENABLE_BROKER se il broker non è abilitato nel file con estensione bak.
  • AUTO_CLOSE=OFF se un database nel file con estensione bak ha l'opzione AUTO_CLOSE=ON.
  • RECOVERY FULL se un database nel file con estensione bak è in modalità di ripristino SIMPLE o BULK_LOGGED.
  • Un filegroup ottimizzato per la memoria viene aggiunto e denominato XTP se non era incluso nel file con estensione bak di origine.
  • Qualsiasi filegroup ottimizzato per la memoria esistente viene rinominato come XTP.
  • Le opzioni SINGLE_USER e RESTRICTED_USER vengono convertite in MULTI_USER.

Limitazioni:

  • I backup dei database danneggiati potrebbero essere ripristinati a seconda del tipo di danneggiamento, ma i backup automatici non vengono eseguiti finché il danneggiamento non viene risolto. Assicurarsi di eseguire DBCC CHECKDB nell'istanza gestita SQL di origine e usare un backup WITH CHECKSUM per evitare questo problema.
  • Non è possibile eseguire il ripristino di un file .BAK di un database che contiene qualsiasi limitazione descritta in questo documento (ad esempio, gli oggetti FILESTREAM o FILETABLE) nell'Istanza gestita di SQL.
  • I file .BAK che contengono più set di backup non possono essere ripristinati.
  • I file .BAK che contengono più file di log non possono essere ripristinati.
  • Non è possibile ripristinare in un'istanza per Utilizzo generico i backup che contengono database di dimensioni maggiori di 8 TB, oggetti OLTP in memoria attivi o un numero di file che supera i 280 file per ogni istanza.
  • Non è possibile ripristinare in un'istanza Business Critical i backup che contengono database di dimensioni maggiori di 4 TB o oggetti OLTP in memoria con dimensioni totali superiori a quelle descritte in limiti delle risorse. Per informazioni sulle istruzioni restore, vedere Istruzioni RESTORE.

Importante

Le stesse limitazioni si applicano all'operazione di ripristino temporizzato predefinita. Ad esempio, non è possibile ripristinare in un'istanza Business Critical un database per Utilizzo generico di dimensioni maggiori di 4 TB. Non è possibile ripristinare in un'istanza per Utilizzo generico un database Business Critical con file OLTP in memoria o con più di 280 file.

Service Broker

Lo scambio di messaggi di Service Broker tra istanze è supportato solo per le istanze gestite di SQL di Azure:

  • CREATE ROUTE: non è possibile usare CREATE ROUTE con ADDRESS diverso da LOCAL o il nome DNS di un'altra istanza gestita di SQL. La porta è sempre la 4022.
  • ALTER ROUTE: non è possibile usare ALTER ROUTE con ADDRESS diverso da LOCAL o il nome DNS di un'altra istanza gestita di SQL. La porta è sempre la 4022.

La sicurezza del trasporto è supportata, ma non quella del dialogo:

  • CREATE REMOTE SERVICE BINDINGnon è supportata.

Service Broker è abilitato per impostazione predefinita e non può essere disabilitato. Le seguenti opzioni di ALTER DATABASE non sono supportate:

  • ENABLE_BROKER
  • DISABLE_BROKER

Stored procedure, funzioni e trigger

  • NATIVE_COMPILATION non è supportato nel livello Utilizzo generico.
  • Le seguenti opzioni sp_configure non sono supportate:
    • allow polybase export
    • allow updates
    • filestream_access_level
    • remote access
    • remote data archive
    • remote proc trans
    • scan for startup procs
  • Le seguenti opzioni di sp_configure vengono ignorate e non hanno alcun effetto:
    • Ole Automation Procedures
  • sp_execute_external_scripts è supportato solo per i servizi di Machine Learning per SQL MI, altrimenti sp_execute_external_scripts non è supportato per Istanza gestita di SQL. Vedere sp_execute_external_scripts.
  • xp_cmdshell non è supportata. Vedere xp_cmdshell.
  • Extended stored procedures non sono supportati, e ciò riguarda sp_addextendedproc e sp_dropextendedproc. Questa funzionalità non sarà supportata perché si trova in un percorso che sarà deprecato per SQL Server. Per altre informazioni, si veda Stored procedure estesa.
  • sp_attach_db, sp_attach_single_file_db e sp_detach_db non sono supportate. Vedere sp_attach_db, sp_attach_single_file_db e sp_detach_db.

Funzione e variabili di sistema

Le variabili, funzioni e viste seguenti restituiscono risultati diversi:

  • SERVERPROPERTY('EngineEdition') restituisce il valore 8. Questa proprietà identifica in maniera univoca un'istanza gestita di SQL. Vedere SERVERPROPERTY.
  • SERVERPROPERTY('InstanceName') restituisce NULL, poiché il concetto di istanza valido per SQL Server non si applica a Istanza gestita di SQL. Vedere SERVERPROPERTY('InstanceName').
  • @@SERVERNAME restituisce un nome DNS completo "collegabile", ad esempio my-managed-instance.wcus17662feb9ce98.database.windows.net. Si veda @@SERVERNAME.
  • SYS.SERVERS restituisce il nome DNS completo "collegabile", ad esempio myinstance.domain.database.windows.net per le proprietà "name" e "data_source". Si veda SYS.SERVERS.
  • @@SERVICENAME restituisce NULL, poiché il concetto di servizio valido per SQL Server non si applica a Istanza gestita di SQL. Si veda @@SERVICENAME.
  • SUSER_ID è supportato. Restituisce NULL se l'account di accesso di Microsoft Entra non è in sys.syslogins. Vedere SUSER_ID.
  • SUSER_SID non è supportata. Vengono restituiti dati errati, il che è un problema noto temporaneo. Vedere SUSER_SID.

Vincoli di ambiente

Subnet

  • Non è possibile inserire altre risorse, ad esempio macchine virtuali, nella subnet in cui è stata distribuita l'istanza gestita di SQL. Distribuire queste risorse usando una subnet diversa.
  • La subnet deve avere un numero sufficiente di indirizzi IP disponibili. Il valore minimo è di almeno 32 indirizzi IP nella subnet.
  • Il numero di vCore e i tipi di istanze che è possibile distribuire in un'area presentano alcuni vincoli e limiti.
  • È disponibile una configurazione di rete che deve essere applicata alla subnet.

Rete virtuale

  • La rete virtuale può essere implementata usando il modello di risorse. Il modello classico non supporta la distribuzione della rete virtuale (VNet).
  • Dopo la creazione di un'istanza gestita di SQL, il trasferimento dell'istanza gestita di SQL o della rete virtuale a un altro gruppo di risorse o a una sottoscrizione non è supportato.
  • Per le istanze gestite di SQL ospitate in cluster virtuali creati prima del 22 settembre 2020, il peering globale della rete virtuale non è supportato. È possibile connettersi a queste risorse tramite ExpressRoute o da rete virtuale a rete virtuale tramite gateway di rete virtuale.

Gruppi di failover

I database di sistema non vengono replicati nell'istanza secondaria in un gruppo di failover. Pertanto, gli scenari che dipendono dagli oggetti dei database di sistema sono impossibili nell'istanza secondaria, a meno che gli oggetti non vengano creati manualmente nel database secondario.

tempdb

  • Le dimensioni massime del file del database di sistema tempdb non possono essere maggiori di 24 GB per core in un livello Utilizzo generico. Le dimensioni massime di tempdb in un livello Business Critical sono limitate dalle dimensioni di archiviazione dell'Istanza gestita di SQL. Le dimensioni del file di log tempdb sono limitate a 120 GB nel livello Utilizzo generico. Alcune query potrebbero restituire un errore se necessitano di più di 24 GB per core in tempdb o se producono più di 120 GB di dati di log.
  • tempdb è sempre suddiviso in 12 file di dati: 1 file di dati primario, detto anche master, e 11 file di dati non primari. La struttura dei file non può essere modificata e non è possibile aggiungere nuovi file a tempdb.
  • I metadati tempDB ottimizzati per la memoria, una nuova funzionalità di database in memoria di SQL Server 2019, non sono supportati.
  • Gli oggetti creati nel database model non possono essere creati automaticamente in tempdb dopo un riavvio o un failover perché tempdb non ottiene il relativo elenco di oggetti iniziale dal database model. È necessario creare oggetti manualmente in tempdb dopo ogni riavvio o failover.

msdb

I seguenti schemi nel database di sistema msdbnell'istanza gestita di SQL devono essere di proprietà dei rispettivi ruoli predefiniti:

Importante

La modifica dei nomi dei ruoli predefiniti, dei nomi degli schemi e dei proprietari degli schemi da parte dei clienti influirà sul normale funzionamento del servizio. Tutte le modifiche apportate a questi elementi verranno ripristinate ai valori predefiniti non appena rilevate o al più tardi al successivo aggiornamento del servizio per garantire il normale funzionamento del servizio.

Log degli errori

Un'istanza gestita di SQL inserisce informazioni dettagliate nei log degli errori. Esistono molti eventi di sistema interni registrati nel log degli errori. Usare una procedura personalizzata per la lettura dei log degli errori che filtra alcune voci non pertinenti. Per altre informazioni, si veda Istanza gestita di SQL - sp_readmierrorlog o Estensione di istanza gestita di SQL (anteprima) per Azure Data Studio.

La modifica del numero di log degli errori conservati non è supportata.