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.
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:
- Disponibilità include le differenze relative a Gruppi di disponibilità Always On e backup.
- Sicurezza include le differenze relative a controllo, certificati, credenziali, provider del servizio di crittografia, accessi e utenti e chiave del servizio e chiave master del servizio.
- Configurazione include le differenze relative a estensione del pool di buffer, regole di confronto, livelli di compatibilità, mirroring del database, opzioni di database, SQL Server Agent e opzioni tabella.
- Funzionalità include BULK INSERT/OPENROWSET, CLR, DBCC, transazioni distribuite, eventi estesi, librerie esterne, FILESTREAM e FileTable, ricerca semantica full-text, server collegati, PolyBase, replica, RESTORE, Service Broker, stored procedure, funzioni e trigger.
- Impostazioni dell'ambiente come le configurazioni di reti virtuali e subnet.
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:
- CREATE ENDPOINT FOR DATABASE_MIRRORING
- CREATE AVAILABILITY GROUP
- ALTER AVAILABILITY GROUP
- DROP AVAILABILITY GROUP
- Clausola SET HADR dell'istruzione ALTER DATABASE
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.
- È supportato solo
- La maggior parte delle opzioni
WITH
generali è supportata.COPY_ONLY
è obbligatorio.FILE_SNAPSHOT
eCREDENTIAL
non sono supportati.- Le opzioni nastro
REWIND
,NOREWIND
,UNLOAD
eNOUNLOAD
non sono supportate. - Le opzioni specifiche dei log
NORECOVERY
,STANDBY
eNO_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é inURL
. - 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.- Eseguire il backup in
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
daFILE
/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:
CREATE CRYPTOGRAPHIC PROVIDER
non è supportata. Vedere CREATE CRYPTOGRAPHIC PROVIDER.ALTER CRYPTOGRAPHIC PROVIDER
non è supportata. Vedere ALTER CRYPTOGRAPHIC PROVIDER.
Account di accesso e utenti
Gli account di accesso SQL creati con
FROM CERTIFICATE
,FROM ASYMMETRIC KEY
eFROM 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 specificaFROM 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 databasemaster
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 tramiteEXEC 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 comeSQL_USER
insys.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.
- 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 è
- Le configurazioni seguenti sono supportate con un file BACPAC di database:
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
osysadmin
, 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 databasemaster
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:
- 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. - 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. - 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. - 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.
- Se l'account Microsoft Entra è mappato direttamente a un login Microsoft Entra, presente in
Chiave del servizio e chiave master del servizio
- Il backup della chiave master non è supportato (gestito dal servizio del database SQL).
- Il ripristino della chiave master non è supportato (gestito dal servizio del database SQL).
- Il backup della chiave master del servizio non è supportato (gestito dal servizio del database SQL).
- Il ripristino della chiave master del servizio non è supportato (gestito dal servizio del database SQL).
Impostazione
Estensione del pool di buffer
- L'estensione del pool di buffer non è supportata.
ALTER SERVER CONFIGURATION SET BUFFER POOL EXTENSION
non è supportata. Vedere ALTER SERVER CONFIGURATION.
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
eSET 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 datiFILESTREAM
, 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
dopoCREATE 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')
. RimuovereFILENAME
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 procedura
sp_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:
- FILESTREAM
- FILETABLE
- TABELLA ESTERNA (ad eccezione di PolyBase)
- MEMORY_OPTIMIZED (non supportato solo nel livello Utilizzo generico)
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 comandoBULK INSERT
durante l'importazione dei file da un'archiviazione BLOB di Azure. Vedere BULK INSERT.DATASOURCE
è obbligatorio nella funzioneOPENROWSET
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:
- È supportato solo
CREATE ASSEMBLY FROM BINARY
. Vedere CREATE ASSEMBLY FROM BINARY. CREATE ASSEMBLY FROM FILE
non è supportata. Vedere CREATE ASSEMBLY FROM FILE.ALTER ASSEMBLY
non può fare riferimento a file. Vedere ALTER ASSEMBLY.
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:
- La destinazione
etw_classic_sync
non è supportata. Archiviare i file.xel
nell'archiviazione BLOB di Azure. Vedere Destinazione etw_classic_sync_target. - La destinazione
event_file
non è supportata. Archiviare i file.xel
nell'archiviazione BLOB di Azure. Vedere Destinazione event_file.
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.
Ricerca semantica full-text
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
oOPENROWSET
come alternativa per l'importazione di file o caricare file usando un pool SQL serverless in Azure Synapse Analytics.
Operazioni:
sp_dropserver
è supportato per l'eliminazione di un server collegato. Vedere sp_dropserver.- La funzione
OPENROWSET
può essere usata per eseguire query solo su istanze di SQL Server. Possono essere istanze gestite, locali o in macchine virtuali. Vedere OPENROWSET. - La funzione OPENDATASOURCE può essere usata per eseguire query solo su istanze di SQL Server. Possono essere istanze gestite, locali o in macchine virtuali. Un esempio è
SELECT * FROM OPENDATASOURCE('SQLNCLI', '...').AdventureWorks2022.HumanResources.Employee
. Sono supportati come provider solo i valoriSQLNCLI
,SQLNCLI11
,SQLOLEDB
eMSOLEDBSQL
. SQL Server Native Client (spesso abbreviato SNAC) è stato rimosso da SQL Server 2022 e da SQL Server Management Studio 19 (SSMS). SQL Server Native Client (SQLNCLI o SQLNCLI11) e il provider OLE DB Microsoft legacy per SQL Server (SQLOLEDB) non sono consigliati per nuovi sviluppi. Passare al nuovo Microsoft OLE DB Driver (MSOLEDBSQL) per SQL Server o alla versione più recente di Microsoft ODBC Driver for SQL Server. - Non è possibile usare i server collegati per leggere i file (Excel, CSV) dalle condivisioni di rete. Provare a usare BULK INSERT, OPENROWSET che legge i file CSV da Archiviazione BLOB di Azure o un server collegato che fa riferimento a un pool SQL serverless in Synapse Analytics. Tenere traccia di queste richieste nell’elemento feedback dell'istanza gestita di SQL
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:
- Replica tra un server di pubblicazione MI di SQL e un sottoscrittore MI di SQL
- Replica tra un server di pubblicazione dell'istanza gestita di SQL, un server di distribuzione SQL MI e un sottoscrittore di SQL Server
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 comprendonoWITH
, comeDIFFERENTIAL
,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'opzioneAUTO_CLOSE=ON
.RECOVERY FULL
se un database nel file con estensione bak è in modalità di ripristinoSIMPLE
oBULK_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
eRESTRICTED_USER
vengono convertite inMULTI_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 backupWITH 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 oggettiFILESTREAM
oFILETABLE
) 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 usareCREATE ROUTE
conADDRESS
diverso daLOCAL
o il nome DNS di un'altra istanza gestita di SQL. La porta è sempre la 4022.ALTER ROUTE
: non è possibile usareALTER ROUTE
conADDRESS
diverso daLOCAL
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 BINDING
non è 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, altrimentisp_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ò riguardasp_addextendedproc
esp_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
esp_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 esempiomy-managed-instance.wcus17662feb9ce98.database.windows.net
. Si veda @@SERVERNAME.SYS.SERVERS
restituisce il nome DNS completo "collegabile", ad esempiomyinstance.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 è insys.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 ditempdb
in un livello Business Critical sono limitate dalle dimensioni di archiviazione dell'Istanza gestita di SQL. Le dimensioni del file di logtempdb
sono limitate a 120 GB nel livello Utilizzo generico. Alcune query potrebbero restituire un errore se necessitano di più di 24 GB per core intempdb
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 anchemaster
, e 11 file di dati non primari. La struttura dei file non può essere modificata e non è possibile aggiungere nuovi file atempdb
.- 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 intempdb
dopo un riavvio o un failover perchétempdb
non ottiene il relativo elenco di oggetti iniziale dal databasemodel
. È necessario creare oggetti manualmente intempdb
dopo ogni riavvio o failover.
msdb
I seguenti schemi nel database di sistema msdb
nell'istanza gestita di SQL devono essere di proprietà dei rispettivi ruoli predefiniti:
- Ruoli generali
- TargetServersRole
- Ruoli predefiniti del database
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
- Ruoli DatabaseMail:
- DatabaseMailUserRole
- Ruoli dei servizi di integrazione:
- db_ssisadmin
- db_ssisltduser
- db_ssisoperator
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.