Funzionalità di SQL Server non supportate per OLTP in memoria

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di Azure

In questo argomento vengono illustrate le funzionalità di SQL Server supportate o non supportate per l'utilizzo con oggetti ottimizzati per la memoria. La sezione finale elenca anche le funzionalità che non erano supportate per OLTP in memoria, ma che lo sono diventate in seguito.

Funzionalità di SQL Server non supportate per OLTP in memoria

Le funzionalità di SQL Server indicate di seguito non sono supportate in un database contenente oggetti ottimizzati per la memoria, incluso un filegroup di dati ottimizzato per la memoria.

Funzionalità non supportata Descrizione della funzionalità
Compressione dei dati per tabelle ottimizzate per la memoria. È possibile utilizzare la funzionalità di compressione dei dati per comprimere i dati in un database e ridurre le dimensioni del database. Per altre informazioni, vedere Data Compression.
Partizionamento di tabelle ottimizzate per la memoria, di indici HASH e di indici non cluster. I dati di tabelle e indici partizionati vengono divisi in unità distribuibili tra più filegroup in un database. Per ulteriori informazioni, vedere Partitioned Tables and Indexes.
Replica Le configurazioni di replica diverse dalla replica transazionale in tabelle ottimizzate per la memoria nei sottoscrittori non sono compatibili con tabelle o viste che fanno riferimento a tabelle ottimizzate per la memoria.

Se è presente un filegroup ottimizzato per la memoria, la replica con sync_mode='snapshot del database' non è supportata.

Per altre informazioni, vedere Replica in sottoscrittori di tabelle con ottimizzazione per la memoria.
Mirroring Il mirroring del database non è supportato per i database con un filegroup MEMORY_OPTIMIZED_DATA. Per altre informazioni sul mirroring, vedi Mirroring del Database (SQL Server).
Ricompilazione del log La ricompilazione del log, tramite il comando attach o l'istruzione ALTER DATABASE, non è supportata per i database che contengono un filegroup MEMORY_OPTIMIZED_DATA.
Server collegato Non è possibile accedere a server collegati nella stessa query o transazione come tabelle ottimizzate per la memoria. Per altre informazioni, vedere Server collegati (Motore di database).
Registrazione bulk Indipendentemente dal modello di recupero del database, tutte le operazioni nelle tabelle durevoli ottimizzate per la memoria vengono sempre registrate completamente.
Registrazione minima La registrazione minima non è supportata dalle tabelle ottimizzate per la memoria. Per altre informazioni sulla registrazione minima, vedi Log delle transazioni (SQL Server) e Prerequisiti per la registrazione minima nell'importazione in blocco.
Rilevamento modifiche Il rilevamento modifiche non è supportato dalle tabelle ottimizzate per la memoria.
Trigger DDL I trigger DDL a livello di database e di server non sono supportati con le tabelle di OLTP in memoria né con i moduli compilati in modo nativo.
Change Data Capture (CDC) SQL Server 2017 CU15 e versioni successive supportano l'abilitazione di CDC nei database con tabelle con ottimizzazione della memoria. Questo è applicabile solo ai database e alle tabelle su disco nel database. Nelle versioni precedenti di SQL Server non è possibile usare CDC con i database contenenti tabelle con ottimizzazione della memoria, perché CDC usa internamente un trigger DDL per DROP TABLE.
Modalità fiber La modalità fiber non è supportata con le tabelle ottimizzate per la memoria:

Se la modalità fiber è attiva, non è possibile creare database con filegroup ottimizzati per la memoria né aggiungere filegroup ottimizzati per la memoria a database esistenti.

È possibile abilitare la modalità fiber se sono presenti database con filegroup ottimizzati per la memoria. Tuttavia, l'abilitazione della modalità fiber richiede il riavvio del server. In quella situazione il recupero dei database con filegroup ottimizzati per la memoria avrà esito negativo. Verrà quindi visualizzato un messaggio di errore che suggerisce di disabilitare la modalità fiber per usare i database con i filegroup ottimizzati per la memoria.

Se è attiva la modalità fiber, non sarà possibile allegare e ripristinare un database con filegroup ottimizzati per la memoria. Il database verrà contrassegnato come sospetto.

Per altre informazioni, vedere lightweight pooling Server Configuration Option.
Limitazione di Service Broker Non è possibile accedere a una coda da una stored procedure compilata in modo nativo,

né a una coda in un database remoto in una transazione che accede a tabelle ottimizzate per la memoria.
Replica nei sottoscrittori La replica transazionale in tabelle ottimizzate per la memoria nei sottoscrittori è supportata con alcune restrizioni. Per altre informazioni, vedere Replica in sottoscrittori di tabelle con ottimizzazione per la memoria

Query e transazioni tra database

Salvo alcune eccezioni, le transazioni tra database non sono supportate. Nella tabella seguente vengono descritti i casi supportati e le relative restrizioni. Vedere anche Query tra database.

Database Consentito Descrizione
Database utente, modello e msdb. No Nella maggior parte dei casi, query e transazioni tra database non sono supportate.

Una query non è in grado di accedere ad altri database se usa una tabella ottimizzata per la memoria o una stored procedure compilata in modo nativo. Questa restrizione si applica alle transazioni e alle query.

Le eccezioni sono i database di sistema tempdb e master. In questo caso il database master è disponibile per l'accesso in sola lettura.
Database delle risorse, tempdb In una transazione che coinvolge gli oggetti di OLTP In memoria, i database di sistema risorse e tempdb possono essere usati senza alcuna restrizione aggiuntiva.

Scenari non supportati

  • Accesso a tabelle ottimizzate per la memoria usando la connessione del contesto dall'interno di stored procedure CLR.

  • Keyset e cursori dinamici sulle query che accedono a tabelle ottimizzate per la memoria. Questi cursori diventano statici e di sola lettura.

  • L'uso di MERGE INTOtarget, dove target è una tabella ottimizzata per la memoria, non è supportato.

    • MERGE USINGsource è supportato per le tabelle ottimizzate per la memoria.
  • Il tipo di dati ROWVERSION (TIMESTAMP) non è supportato. Per ulteriori informazioni, vedere FROM (Transact-SQL).

  • L'opzione di chiusura automatica non è supportata con i database che contengono un filegroup MEMORY_OPTIMIZED_DATA

  • La DDL transazionale, ad esempio le istruzioni CREATE/ALTER/DROP degli oggetti OLTP in memoria, non è supportata nelle transazioni utente.

  • Notifica degli eventi.

  • Gestione basata su criteri.

    • Le modalità "impedisci esecuzione" e "solo log" della funzionalità di gestione basata su criteri non sono supportate. La presenza di tali criteri nel server può impedire la corretta esecuzione della DDL di OLTP in memoria. Le modalità Su richiesta e Su pianificazione sono supportate.
  • L'indipendenza del database (Database indipendenti) non è supportata con OLTP in memoria.

    • L'autenticazione di database indipendenti è supportata, Tuttavia, tutti gli oggetti OLTP in memoria sono contrassegnati come entità che interrompono il contenimento nella vista a gestione dinamica (DMV) dm_db_uncontained_entities.

Supporti aggiunti di recente

In alcuni casi, in una versione più recente di SQL Server viene aggiunto il supporto per una funzionalità che in precedenza non era supportata. Questa sezione elenca le funzionalità che non erano supportate per OLTP in memoria, ma che lo sono diventate in seguito.

Nella tabella seguente i valori della versione, ad esempio (15.x), fanno riferimento al valore restituito dall'istruzione Transact-SQL SELECT @@Version;.

Nome funzionalità Versione di SQL Server Commenti
Snapshot del database 2019 (15.x) Gli snapshot del database sono ora supportati per i database che contengono un filegroup MEMORY_OPTIMIZED_DATA.

Vedi anche