Accès aux tables à mémoire optimisée à l’aide du Transact-SQL interprété

S’applique à : SQL Server Azure SQL Database Not supported. Azure Synapse Analytics Not supported. Analytics Platform System (PDW)

Avec seulement quelques exceptions, vous pouvez accéder à des tables optimisées en mémoire à l’aide d’une requête Transact-SQL ou d’une opération DML (sélectionner, insérer, mettre à jour ou supprimer), des lots ad hoc et des modules SQL tels que des procédures stockées, des fonctions table, des déclencheurs et des vues.

Transact-SQL interprété fait référence aux lots Transact-SQL ou procédures stockées autres qu’une procédure stockée compilée en mode natif. L’accès Transact-SQL interprété aux tables mémoire optimisées est appelé accès interop.

À compter de SQL Server 2016 (13.x), les requêtes dans Transact-SQL interprétées peuvent analyser des tables optimisées en mémoire en parallèle, au lieu d’être juste en mode série.

Les tables mémoire optimisées sont également accessibles à l'aide d'une procédure stockée compilée en mode natif. Les procédures stockées compilées en mode natif sont recommandées pour les opérations OLTP critiques pour les performances.

L’accès Transact-SQL interprété est recommandé pour ces scénarios :

  • Requêtes ad hoc et tâches d'administration.

  • Requêtes de rapports qui utilisent généralement des constructions non disponibles dans les procédures stockées compilées en mode natif (telles que les fonctions de fenêtre , parfois désignées sous le terme de fonctions OVER ).

  • Pour migrer des parties de votre application qui ont un impact sur les performances vers des tables mémoire optimisées, avec des modifications de code minimes (ou sans aucune modification du code). Potentiellement, vous constaterez de meilleures performances en migrant des tables. Si vous migrez ensuite des procédures stockées vers des procédures stockées compilées en mode natif, vous constaterez des améliorations de performances accrues.

  • Lorsqu’une instruction Transact-SQL n’est pas disponible pour les procédures stockées compilées en mode natif.

Toutefois, les constructions Transact-SQL suivantes ne sont pas prises en charge dans les procédures stockées Transact-SQL interprétées qui accèdent aux données d’une table optimisée en mémoire.

Zone Non pris en charge
Accès aux tables TRUNCATE TABLE

MERGE (table mémoire optimisée comme cible).

Curseurs DYNAMIC et KEYSET (dégradés automatiquement en STATIC).

Accédez aux modules CLR à l'aide de la connexion contextuelle.

Référencement d'une table mémoire optimisée à partir d'une vue indexée.
Bases de données croisées Requêtes entre plusieurs bases de données

Transactions entre bases de données

Serveurs liés

Indicateurs de table

Pour plus d'informations sur les indicateurs de table, consultez. Indicateurs de table (Transact-SQL). L’INSTANTANÉ a été ajouté pour prendre en charge OLTP en mémoire.

Les indicateurs de tableau suivants ne sont pas pris en charge lors de l’accès à une table optimisée en mémoire à l’aide de Transact-SQL interprété.

HOLDLOCK

PAGLOCK

READUNCOMMITTED

TABLOCKXX

IGNORE_CONSTRAINTS

READCOMMITTED

ROWLOCK

UPDLOCK

IGNORE_TRIGGERS

READCOMMITTEDLOCK

SPATIAL_WINDOW_MAX_CELLS = integer

XLOCK

NOWAIT

READPAST

TABLOCK

Lorsque vous accédez à une table optimisée en mémoire à partir d’une transaction explicite ou implicite à l’aide de Transact-SQL interprété, vous devez effectuer au moins l’une des opérations suivantes :

Un indicateur de table de niveau d’isolation n’est pas obligatoire pour les tables optimisées en mémoire accessibles par des requêtes qui s’exécutent en mode de validation automatique.

Voir aussi

Prise en charge de Transact-SQL pour OLTP en mémoire

Migration vers OLTP en mémoire