Share via


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

À quelques exceptions près, 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 (SELECT, INSERT, UPDATE ou DELETE), de lots ad hoc et de modules SQL tels que des procédures stockées, des fonctions table-valeur, des déclencheurs et des vues.

Transact-SQL interprété fait référence aux lots Transact-SQL ou aux 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ée est appelé accès d’interopérabilité.

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 les scénarios suivants :

  • 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).

  • 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.

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 à mémoire optimisée.

Domaine 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 de bases de données croisées

Transactions de bases de données croisées

Serveurs liés

Indicateurs de table

Pour plus d'informations sur les indicateurs de table, consultez. Indicateurs de table (Transact-SQL). L’isolation d’instantané a été ajoutée pour prendre en charge In-Memory OLTP.

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

HOLDLOCK IGNORE_CONSTRAINTS IGNORE_TRIGGERS NOWAIT
PAGLOCK READCOMMITTED READCOMMITTEDLOCK READPAST
READUNCOMMITTED ROWLOCK SPATIAL_WINDOW_MAX_CELLS = integer TABLOCK
TABLOCKXX UPDLOCK XLOCK

Lorsque vous accédez à une table à mémoire optimisée à partir d’une transaction explicite ou implicite à l’aide de Transact-SQL interprété, vous devez inclure un indicateur de table de niveau d’isolation tel que SNAPSHOT, REPEATABLEREAD ou SERIALIZABLE, ou vous pouvez utiliser MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT. Pour plus d’informations, consultez Recommandations pour les niveaux d’isolation des transactions avec Memory-Optimized tables et options ALTER DATABASE SET (Transact-SQL).

Notes

Un indicateur de table de niveau d'isolation n'est pas obligatoire pour les tables mémoire optimisées 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