Fonctionnalités SQL Server non prises en charge pour l’OLTP en mémoire

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Cette rubrique décrit les fonctionnalités SQL Server qui ne sont pas prises en charge pour une utilisation avec des objets optimisés en mémoire. De plus, la section finale liste les fonctionnalités qui n’étaient pas prises en charge pour l’OLTP en mémoire, mais qui ont ensuite été prises en charge.

Fonctionnalités SQL Server non prises en charge pour OLTP en mémoire

Les fonctionnalités SQL Server suivantes ne sont pas prises en charge sur une base de données qui a des objets à mémoire optimisée (y compris le groupe de fichiers de données à mémoire optimisée).

Fonctionnalités non prises en charge Description de la fonctionnalité
Compression de données pour les tables à mémoire optimisée. Vous pouvez utiliser la fonctionnalité de compression de données pour compresser les données dans une base de données et réduire la taille de la base de données. Pour plus d’informations, consultez Compression de données.
Partitionnement des index HASH et des tables à mémoire optimisée, ainsi que des index non cluster. Les données des tables et des index partitionnés sont divisées en unités qui peuvent être réparties sur plusieurs groupes de fichiers d'une base de données. Pour plus d’informations, consultez Tables et index partitionnés.
Réplication Les configurations de réplication autres que la réplication transactionnelle vers des tables à mémoire optimisée sur les abonnés sont incompatibles avec des tables ou des vues qui référencent des tables à mémoire optimisée.

S’il existe un groupe de fichiers à mémoire optimisée, la réplication à l’aide de sync_mode='database snapshot' n’est pas prise en charge.

Pour plus d’informations, consultez Abonnés à la réplication de tables optimisées en mémoire.
Mise en miroir La mise en miroir de base de données n’est pas prise en charge pour les bases de données avec un groupe de fichiers MEMORY_OPTIMIZED_DATA. Pour plus d’informations sur la mise en miroir, consultez La mise en miroir de bases de données (SQL Server).
Reconstruire le journal La reconstruction du journal, via un attachement ou ALTER DATABASE, n'est pas prise en charge pour les bases de données avec un groupe de fichiers MEMORY_OPTIMIZED_DATA.
Serveur lié Vous ne peut pas accéder à des serveurs liés dans la même requête ou transaction en tant que tables à mémoire optimisée. Pour plus d’informations, consultez Serveurs liés (moteur de base de données).
Journalisation en bloc Quel que soit le mode de récupération de la base de données, toutes les opérations sur les tables à mémoire optimisée durables sont toujours entièrement journalisées.
Journalisation minimale La journalisation minimale n'est pas prise en charge pour les tables à mémoire optimisée. Pour plus d’informations sur la journalisation minimale, consultez Le journal des transactions (SQL Server) et les prérequis pour la journalisation minimale dans l’importation en bloc.
Suivi des modifications Le suivi des modifications n’est pas pris en charge pour les tables à mémoire optimisée.
Déclencheurs DDL Les déclencheurs au niveau de la base de données et les déclencheurs DDL au niveau du serveur ne sont pas pris en charge avec les tables OLTP en mémoire ou avec des modules compilés en mode natif.
Capture de données modifiées (CDC) SQL Server 2017 CU15 et versions ultérieures prennent en charge l’activation de la capture des changements de données sur une base de données ayant des tables à mémoire optimisée. Cela s’applique uniquement à la base de données et aux tables sur disque dans la base de données. Dans les versions antérieures de SQL Server, la capture des changements de données ne peut pas être utilisée avec une base de données qui contient des tables à mémoire optimisée, car elle utilise en interne un déclencheur DDL pour exécuter une opération DROP TABLE.
Mode fibre Le mode fibre n’est pas pris en charge avec les tables à mémoire optimisée :

Si le mode fibre est activé, vous ne pouvez pas créer de bases de données avec des groupes de fichiers à mémoire optimisée ni ajouter de tels groupes aux bases de données existantes.

Vous pouvez activer le mode fibre s'il existe déjà des bases de données avec des groupes de fichiers à mémoire optimisée. Cependant, l'activation du mode fibre nécessite un redémarrage du serveur. Dans cette situation, les bases de données avec des groupes de fichiers à mémoire optimisée ne peuvent pas être récupérées. Vous voyez un message d’erreur vous suggérant de désactiver le mode fibre pour pouvoir utiliser les bases de données avec des groupes de fichiers à mémoire optimisée.

Si le mode fibre est actif, l’attachement et la restauration d’une base de données dont le groupe de fichiers mémoire est optimisé échoue. Les bases de données sont marquées comme suspectes.

Pour plus d’informations, consultez lightweight pooling Server Configuration Option.
Limitation de Service Broker Impossible d'accéder à une file d'attente à partir d'une procédure stockée compilée en mode natif.

Impossible d'accéder à une file d'attente dans une base de données distante, dans une transaction qui accède à des tables à mémoire optimisée.
Réplication sur les abonnés La réplication transactionnelle vers des tables à mémoire optimisée sur les abonnés est prise en charge, mais avec certaines restrictions. Pour plus d’informations, consultez Abonnés à la réplication de tables optimisées en mémoire.

Requêtes et transactions de bases de données croisées

À quelques exceptions près, les transactions entre bases de données ne sont pas prises en charge. Le tableau suivant décrit les cas sont pris en charge, et les restrictions correspondantes. (Voir aussi Requêtes de bases de données croisées.)

Bases de données Autorisé Description
Bases de données utilisateur, model et msdb. Non Dans la plupart des cas, les requêtes et transactions de bases de données croisées ne sont pas prises en charge.

Une requête ne peut pas accéder à d’autres bases de données si la requête utilise une table à mémoire optimisée ou une procédure stockée compilée en mode natif. Cette restriction s’applique aux transactions et aux requêtes.

Les exceptions sont les bases de données système tempdb et MASTER. La base de données MASTER est ici accessible en lecture seule.
Base de données Resource, tempdb Oui Dans une transaction qui traite les objets OLTP en mémoire, les bases de données système Resource et tempdb peuvent être utilisées sans restriction.

Scénarios non pris en charge.

  • Accès aux tables à mémoire optimisée à l’aide de la connexion contextuelle depuis des procédures stockées CLR.

  • Curseurs de jeu de clés et dynamiques sur les requêtes qui accèdent aux tables à mémoire optimisée. Ces curseurs sont dégradés en statique et en lecture seule.

  • L’utilisation de MERGE INTOcible , où cible est une table à mémoire optimisée, n’est pas prise en charge.

    • MERGE USINGsource est pris en charge pour les tables à mémoire optimisée.
  • Le type de données ROWVERSION (TIMESTAMP) n’est pas pris en charge. Pour plus d’informations, consultez FROM (Transact-SQL).

  • La fermeture automatique n’est pas prise en charge par les bases de données avec un groupe de fichiers MEMORY_OPTIMIZED_DATA.

  • Une opération DDL transactionnelle, comme CREATE/ALTER/DROP des objets OLTP en mémoire, n’est pas prise en charge dans les transactions utilisateur.

  • Notification d'événements

  • Gestion basée sur des stratégies (PBM).

    • Empêcher et journaliser uniquement les modes PBM ne sont pas pris en charge. L'existence de ces stratégies sur le serveur peut empêcher l'exécution des déclencheurs DDL de l'OLTP en mémoire. Les modes à la demande et à la planification sont pris en charge.
  • L’autonomie de la base de donnée (bases de données autonomes) n’est pas prise en charge avec l’OLTP en mémoire.

    • L'authentification de la base de données autonome est prise en charge. Toutefois, tous les objets OLTP en mémoire sont marqués comme étant des « relations contenant-contenu essentielles » dans la vue de gestion dynamique dm_db_uncontained_entities.

Prises en charge ajoutées récemment

Parfois, une version plus récente de SQL Server ajoute la prise en charge d’une fonctionnalité qui n’était auparavant pas prise en charge. Cette section répertorie les fonctionnalités qui étaient non prises en charge pour OLTP en mémoire, mais qui sont devenues ultérieurement prises en charge pour OLTP en mémoire.

Dans le tableau suivant, les valeurs de version comme (15.x) font référence à la valeur retournée par l’instruction Transact-SQL SELECT @@Version;.

Nom de la fonction Version de SQL Server Commentaires
Instantanés de base de données 2019 (15.x) Les instantanés de base de données sont désormais pris en charge pour les bases de données qui ont un groupe de fichiers MEMORY_OPTIMIZED_DATA.

Voir aussi