Partager via


structures Transact-SQL non prises en charge par In-Memory OLTP

Les tables optimisées en mémoire et les procédures stockées compilées en mode natif ne prennent pas en charge la totalité de la surface d'exposition Transact-SQL supportée par les tables basées sur disque et les procédures stockées interprétées Transact-SQL. Lorsque vous tentez d’utiliser l’une des fonctionnalités non prises en charge, le serveur retourne une erreur.

Le texte du message d’erreur mentionne le type d’instruction Transact-SQL (fonctionnalité, opération, option, par exemple) ainsi que le nom de la fonctionnalité ou du mot clé Transact-SQL. La plupart des fonctionnalités non prises en charge retournent l’erreur 10794, avec le texte du message d’erreur indiquant la fonctionnalité non prise en charge. Les tableaux suivants répertorient les fonctionnalités et mots clés Transact-SQL qui peuvent apparaître dans le texte du message d’erreur, ainsi que l’action corrective pour résoudre l’erreur.

Pour plus d’informations sur les fonctionnalités prises en charge avec des tables optimisées en mémoire et des procédures stockées compilées en mode natif, consultez :

Bases de données qui utilisent In-Memory OLTP

Le tableau suivant répertorie les fonctionnalités et mots clés Transact-SQL qui peuvent apparaître dans le texte du message d’une erreur impliquant une base de données OLTP In-Memory.

Catégorie Nom Résolution
Choix FERMETURE_AUTOMATIQUE L’option de base de données AUTO_CLOSE=ON n’est pas prise en charge avec les bases de données qui ont un groupe de fichiers MEMORY_OPTIMIZED_DATA.
Choix ATTACH_REBUILD_LOG L'option de base de données CREATE ATTACH_REBUILD_LOG n'est pas compatible avec les bases de données ayant un groupe de fichiers MEMORY_OPTIMIZED_DATA.
Caractéristique CAPTURE INSTANTANÉE DE DONNÉES La création d’instantanés de base de données n’est pas prise en charge avec les bases de données qui ont un groupe de fichiers MEMORY_OPTIMIZED_DATA.
Caractéristique Réplication à l’aide du sync_method 'instantané de base de données' ou du 'caractère de l'instantané de base de données' La réplication à l'aide de la méthode de synchronisation 'database snapshot' ou 'database snapshot character' n'est pas supportée avec les bases de données qui ont un groupe de fichiers MEMORY_OPTIMIZED_DATA.
Caractéristique DBCC CHECKDB

DBCC CHECKTABLE
DBCC CHECKDB ignore les tables mémoire optimisées dans la base de données.

DBCC CHECKTABLE échoue pour les tables mémoire optimisées.

Memory-Optimized tables

Le tableau suivant répertorie les fonctionnalités et mots clés Transact-SQL qui peuvent apparaître dans le texte du message d’une erreur impliquant une table optimisée en mémoire, ainsi que l’action corrective pour résoudre l’erreur.

Catégorie Nom Résolution
Caractéristique ACTIVÉ Les tables optimisées en mémoire ne peuvent pas être placées sur un groupe de fichiers ou un schéma de partition. Supprimez la clause ON de l’instruction CREATE TABLE .
Type de données Nom du type de données Le type de données indiqué n’est pas pris en charge. Remplacez le type par l’un des types de données pris en charge. Pour plus d’informations, consultez Types de données pris en charge.
Caractéristique Colonnes calculées Les colonnes calculées ne sont pas prises en charge pour les tables optimisées en mémoire. Supprimez les colonnes calculées de l’instruction CREATE TABLE .
Caractéristique Réplication La réplication n’est pas prise en charge avec les tables optimisées pour la mémoire.
Caractéristique FLUX DE FICHIER Le stockage FILESTREAM n’est pas pris en charge pour les colonnes des tables optimisées en mémoire. Supprimez le FILESTREAM mot clé de la définition de colonne.
Caractéristique CLAIRSEMÉ Les colonnes de tables optimisées en mémoire ne peuvent pas être définies comme SPARSE. Supprimez le SPARSE mot clé de la définition de colonne.
Caractéristique ROWGUIDCOL L’option ROWGUIDCOL n’est pas prise en charge pour les colonnes de tables optimisées en mémoire. Supprimez le ROWGUIDCOL mot clé de la définition de colonne.
Caractéristique CLÉ ÉTRANGÈRE Les contraintes FOREIGN KEY ne sont pas prises en charge pour les tables optimisées en mémoire. Supprimez la contrainte de la définition de table.

Pour plus d’informations sur la façon d’atténuer le manque de prise en charge des contraintes, consultez Migration des contraintes de vérification et de clé étrangère.
Caractéristique VÉRIFIER Les contraintes CHECK ne sont pas prises en charge pour les tables optimisées en mémoire. Supprimez la contrainte de la définition de table.

Pour plus d’informations sur la façon d’atténuer le manque de prise en charge des contraintes, consultez Migration des contraintes de vérification et de clé étrangère.
Caractéristique UNIQUE Les contraintes UNIQUES ne sont pas prises en charge pour les tables optimisées en mémoire. Supprimez la contrainte de la définition de table.

Pour plus d’informations sur la façon d’atténuer le manque de prise en charge des contraintes, consultez Migration des contraintes de vérification et des clés étrangères.
Caractéristique COLUMNSTORE Les index COLUMNSTORE ne sont pas pris en charge avec les tables performantes en termes de mémoire. Spécifiez un index NONCLUSTERED ou un index de hachage NONCLUSTERED à la place.
Caractéristique index clusterisé Spécifiez un index non cluster. Dans le cas d’un index de clé primaire, veillez à spécifier PRIMARY KEY NONCLUSTERED [HASH].
Caractéristique page de code non-1252 Les colonnes des tables optimisées pour la mémoire avec les types de données char et varchar doivent utiliser la page de code 1252. Utilisez n(var)char au lieu de (var)char, ou utilisez un classement avec la page de codes 1252 (par exemple, Latin1_General_BIN2). Pour plus d’informations, consultez Classements et pages de codes.
Caractéristique DDL à l’intérieur des transactions Les tables optimisées en mémoire et les procédures stockées compilées en mode natif ne peuvent pas être créées ou supprimées dans le contexte d’une transaction utilisateur. Ne démarrez pas une transaction et vérifiez que le paramètre de session IMPLICIT_TRANSACTIONS est OFF avant d’exécuter l’instruction CREATE ou DROP.
Caractéristique Déclencheurs DDL Les tables optimisées en mémoire et les procédures stockées compilées en mode natif ne peuvent pas être créées ou supprimées s’il existe un déclencheur de serveur ou de base de données pour cette opération DDL. Supprimez les déclencheurs de serveur et de base de données sur CREATE/DROP TABLE et CREATE/DROP PROCEDURE.
Caractéristique NOTIFICATION D’ÉVÉNEMENT Les tables optimisées en mémoire et les procédures stockées compilées en mode natif ne peuvent pas être créées ou supprimées s’il existe une notification d’événement de serveur ou de base de données pour cette opération DDL. Supprimez les notifications d’événements de serveur et de base de données sur CREATE TABLE ou DROP TABLE et CREATE PROCEDURE ou DROP PROCEDURE.
Caractéristique FileTable Les tables optimisées en mémoire ne peuvent pas être créées en tant que tables de fichiers. Supprimer l’argument AS FileTable de l’instruction CREATE TABLE
Opération Mise à jour des colonnes clés primaires Les colonnes clés primaires des tables et types de tables à mémoire optimisée ne peuvent pas être mises à jour. Si la clé primaire doit être mise à jour, supprimez l’ancienne ligne et insérez la nouvelle ligne avec la clé primaire mise à jour.
Opération CRÉER UN INDEX Les index sur les tables mémoire optimisées doivent être spécifiés inline avec l’instruction CREATE TABLE . Pour ajouter un index à une table optimisée en mémoire, supprimez et recréez la table, y compris la nouvelle spécification d’index.
Opération MODIFIER TABLE La modification des tables optimisées en mémoire n’est pas prise en charge. Supprimez et recréez la table à l’aide de la définition de table mise à jour.
Opération CRÉER UN INDEX FULLTEXT Les index de texte intégral ne sont pas pris en charge pour les tables optimisées en mémoire.
Opération Modification du schéma Les tables optimisées en mémoire et les procédures stockées compilées en mode natif ne prennent pas en charge les modifications de shema, par exemple sp_rename.

La tentative d’apporter des modifications de schéma, telles que le changement de nom d’une table, génère l’erreur 12320, les opérations qui nécessitent une modification de la version du schéma, par exemple le changement de nom, ne sont pas prises en charge avec les tables optimisées en mémoire.

Pour modifier le schéma, supprimez et recréez la table ou la procédure à l’aide d’une définition mise à jour.
Opération CREATE TRIGGER Les déclencheurs sur des tables mémoire optimisées ne sont pas pris en charge.
Opération TRONQUER LA TABLE L’opération TRUNCATE n’est pas prise en charge pour les tables à mémoire optimisée. Pour supprimer toutes les lignes d’une table, supprimez toutes les lignes à l’aide DELETE FROM de la table ou supprimez et recréez la table.
Opération MODIFIER L'AUTORISATION La modification du propriétaire d’une table mémoire optimisée existante ou d’une procédure stockée compilée en mode natif n’est pas prise en charge. Supprimez et recréez la table ou la procédure pour modifier la propriété.
Opération ALTER SCHEMA La modification du schéma d’une table optimisée en mémoire existante ou d’une procédure stockée compilée en mode natif n’est pas prise en charge. Supprimez et recréez la table ou la procédure pour modifier le schéma.
Opération DBCC CHECKTABLE DBCC CHECKTABLE n’est pas pris en charge avec les tables à mémoire optimisée.
Caractéristique ANSI_PADDING DÉSACTIVÉ L’option ANSI_PADDING de session doit être ACTIVÉE lors de la création de tables optimisées en mémoire ou de procédures stockées compilées en mode natif. Exécutez SET ANSI_PADDING ON avant d’exécuter l’instruction CREATE.
Choix COMPRESSION_DE_DONNÉES La compression des données n’est pas prise en charge pour les tables mémoire optimisées. Supprimez l’option de la définition de table.
Caractéristique DTC Les tables optimisées en mémoire et les procédures stockées compilées en mode natif ne sont pas accessibles à partir de transactions distribuées. Utilisez plutôt des transactions SQL.
Caractéristique Service de résolution d'adresses de multidiffusion (MARS) Plusieurs jeux de résultats actifs (MARS) ne sont pas pris en charge avec les tables optimisées en mémoire. Cette erreur peut aussi indiquer l’utilisation d’un serveur de liens. Le serveur lié peut utiliser MARS. Les serveurs liés ne sont pas pris en charge par les tables à mémoire optimisée. Au lieu de cela, connectez-vous directement au serveur et à la base de données qui héberge les tables optimisées en mémoire.
Opération Tables optimisées en mémoire comme cible de MERGE Les tables optimisées pour la mémoire ne peuvent pas être la cible d’une MERGE opération. Utilisez les instructions INSERT, UPDATE ou DELETE à la place.

Indexations sur les tables Memory-Optimized

Le tableau suivant répertorie les fonctionnalités et mots clés Transact-SQL qui peuvent apparaître dans le texte du message d’une erreur impliquant un index sur une table optimisée en mémoire, ainsi que l’action corrective pour résoudre l’erreur.

Catégorie Nom Résolution
Caractéristique Index filtré Les index filtrés ne sont pas pris en charge avec les tables optimisées en mémoire. Omettez la WHERE clause de la spécification d’index.
Caractéristique UNIQUE Les index uniques ne sont pas pris en charge pour les tables optimisées en mémoire. Supprimez l’argument UNIQUE de la spécification d’index.
Caractéristique Colonnes nullables Toutes les colonnes de la clé d’un index sur une table mémoire optimisée doivent être spécifiées en tant que NOT NULL. Incluez la NOT NULL contrainte avec toutes les colonnes des clés d’index.
Caractéristique classement non bin2 Toutes les colonnes de caractères de la clé d’un index optimisé pour la mémoire doivent être déclarées à l’aide d’un classement BIN2. Utilisez la COLLATE clause pour définir le classement dans la définition de colonne. Pour plus d’informations, consultez Classements et pages de codes.
Caractéristique Colonnes incluses La spécification des colonnes incluses n’est pas nécessaire pour les tables optimisées en mémoire. Toutes les colonnes de la table mémoire optimisée sont implicitement incluses dans chaque index optimisé en mémoire.
Opération ALTER INDEX La modification des index sur les tables optimisées en mémoire n’est pas prise en charge. Au lieu de cela, supprimez la table et recréez-la à l’aide de la spécification d’index mise à jour.
Opération SUPPRIMER L'INDEX La suppression d’index sur des tables optimisées en mémoire n’est pas prise en charge. Au lieu de cela, supprimez la table et recréez-la avec les index souhaités.
Option d’index Option d’index L’option d’index indiquée n’est pas prise en charge avec des index sur des tables mémoire optimisées. Supprimez l’option de la spécification d’index.

Index de hachage non-clusterisé

Le tableau suivant répertorie les fonctionnalités et mots clés Transact-SQL qui peuvent apparaître dans le texte du message d’une erreur impliquant un index de hachage non-clusterisé, ainsi que les mesures correctives pour corriger l'erreur.

Catégorie Nom Résolution
Choix ASC/DESC Les index de hachage non-clusterisés ne sont pas ordonnés. Supprimez les mots clés ASC et DESC de la spécification de clé d’index.

Procédures stockées compilées en mode natif

Le tableau suivant répertorie les fonctionnalités et mots clés Transact-SQL qui peuvent apparaître dans le texte du message d’une erreur impliquant des procédures stockées compilées en mode natif, ainsi que l’action corrective pour résoudre l’erreur.

Catégorie Caractéristique Résolution
Caractéristique Variables de table en ligne Les types de table ne peuvent pas être déclarés inline avec des déclarations de variable. Les types de tables doivent être déclarés explicitement à l’aide d’une CREATE TYPE instruction.
Caractéristique Curseurs Les curseurs ne sont pas pris en charge sur ou dans les procédures stockées compilées en mode natif.

-Lors de l’exécution de la procédure à partir du client, utilisez RPC plutôt que l’API de curseur. Avec ODBC, évitez l’instruction EXECUTETransact-SQL, spécifiez plutôt le nom de la procédure directement.

-Lors de l’exécution de la procédure à partir d’un lot Transact-SQL ou d’une autre procédure stockée, évitez d’utiliser un curseur avec la procédure stockée compilée en mode natif.

-Lors de la création d’une procédure stockée compilée en mode natif, plutôt que d’utiliser un curseur, utiliser une logique axée sur les ensembles ou une WHILE boucle.
Caractéristique Paramètres non constants par défaut Lorsque vous utilisez des valeurs par défaut avec des paramètres sur des procédures stockées compilées en mode natif, les valeurs doivent être des constantes. Supprimez les caractères génériques des déclarations de paramètre.
Caractéristique EXTERNE Les procédures stockées CLR ne peuvent pas être compilées en mode natif. Supprimez la clause AS EXTERNAL ou l’option NATIVE_COMPILATION de l’instruction CREATE PROCEDURE.
Caractéristique Procédures stockées numérotées Les procédures stockées compilées en mode natif ne peuvent pas être numérotées. Retirez le ;nombre de la CREATE PROCEDURE instruction.
Caractéristique insert à plusieurs lignes ... Instructions VALUES Impossible d’insérer plusieurs lignes à l’aide de la même INSERT instruction dans une procédure stockée compilée en mode natif. Créez des INSERT déclarations pour chaque ligne.
Caractéristique Expressions de table courantes (CTEs) Les expressions de table courantes (CTE) ne sont pas prises en charge dans les procédures stockées compilées en mode natif. Réécrire la requête.
Caractéristique sous-requête Les sous-requêtes (requêtes imbriquées à l’intérieur d’une autre requête) ne sont pas prises en charge. Réécrire la requête.
Caractéristique CALCULER La clause COMPUTE n'est pas prise en charge. Supprimez-la de la requête.
Caractéristique SÉLECTIONNER DANS La INTO clause n’est pas prise en charge avec l’instruction SELECT . Réécrire la requête en tant que INSERT INTOtableSELECT.
Caractéristique SORTIE La clause OUTPUT n'est pas prise en charge. Supprimez-la de la requête.
Caractéristique liste des colonnes à insérer incomplète Dans INSERT les instructions, les valeurs doivent être spécifiées pour toutes les colonnes de la table.
Fonction Fonction La fonction intégrée n’est pas prise en charge dans les procédures stockées compilées en mode natif. Retirez la fonction de la procédure stockée. Pour plus d’informations sur les fonctions intégrées prises en charge, consultez Procédures stockées compilées en mode natif.
Caractéristique CAS L’instruction CASE n’est pas prise en charge dans les requêtes dans les procédures stockées compilées en mode natif. Créez des requêtes pour chaque cas. Pour plus d’informations, consultez Implémentation d’une instruction CASE.
Caractéristique fonctions définies par l'utilisateur Les fonctions définies par l’utilisateur ne peuvent pas être utilisées dans les procédures stockées compilées en mode natif. Supprimez la référence à la fonction de la définition de procédure.
Caractéristique agrégats définis par l’utilisateur Les fonctions d’agrégation définies par l’utilisateur ne peuvent pas être utilisées dans les procédures stockées compilées en mode natif. Supprimez la référence à la fonction de la procédure.
Caractéristique parcourir les métadonnées du mode Les procédures stockées compilées en mode natif ne prennent pas en charge les métadonnées du mode de navigation. Vérifiez que l’option NO_BROWSETABLE de session est définie sur OFF.
Caractéristique DELETE avec la clause FROM La clause FROM n’est pas prise en charge pour les instructions DELETE avec une source de table dans des procédures stockées compilées nativement.

DELETE avec la clause FROM est prise en charge lorsqu’elle est utilisée pour indiquer la table d'où supprimer.
Caractéristique UPDATE avec la clause FROM La clause FROM n’est pas prise en charge pour les instructions UPDATE dans les procédures stockées compilées en mode natif.
Caractéristique procédures temporaires Les procédures stockées temporaires ne peuvent pas être compilées en mode natif. Créez soit une procédure stockée compilée en mode natif permanente, soit une procédure stockée interprétée temporaire Transact-SQL.
Niveau d’isolation LECTURE NON ENGAGÉE Le niveau d’isolation READ UNCOMMITTED n’est pas pris en charge pour les procédures stockées compilées en mode natif. Utilisez un niveau d’isolation pris en charge, tel que SNAPSHOT.
Niveau d’isolation LECTURE VALIDÉE Le niveau d’isolation READ UNCOMMITTED n’est pas pris en charge pour les procédures stockées compilées en mode natif. Utilisez un niveau d’isolation pris en charge, tel que SNAPSHOT.
Caractéristique tables temporaires Les tables dans tempdb ne peuvent pas être utilisées dans les procédures stockées compilées en mode natif. Utilisez plutôt une variable de table ou une table optimisée en mémoire avec DURABILITY=SCHEMA_ONLY.
Caractéristique MARS Plusieurs jeux de résultats actifs (MARS) ne sont pas pris en charge avec les procédures stockées compilées en mode natif. Cette erreur peut également indiquer l’utilisation du serveur lié. Le serveur lié peut utiliser MARS. Les serveurs liés ne sont pas pris en charge avec les procédures stockées compilées en mode natif. Au lieu de cela, connectez-vous directement au serveur et à la base de données qui héberge les procédures stockées compilées en mode natif.
Caractéristique DTC Les tables optimisées en mémoire et les procédures stockées compilées en mode natif ne sont pas accessibles à partir de transactions distribuées. Utilisez plutôt des transactions SQL.
Caractéristique classement non bin2 La comparaison, le tri et d’autres opérations sur les chaînes de caractères dans les procédures stockées compilées en mode natif nécessitent l’utilisation d’un classement BIN2. Utilisez la clause COLLATE ou utilisez des colonnes et des variables avec un classement approprié. Pour plus d’informations, consultez Classements et pages de codes.
Caractéristique Troncation des chaînes de caractères avec un interclassement SC. Les chaînes de caractères avec un _SC classement utilisent l’encodage UTF-16. La conversion d’une valeur n(var)char en une nouvelle valeur n(var)char avec une longueur réduite implique la troncature. Cela n’est pas pris en charge pour les valeurs UTF-16 dans les procédures stockées compilées en mode natif. Évitez la troncation des chaînes UTF-16.
Caractéristique EXÉCUTER AVEC RECOMPILE L’option WITH RECOMPILE n’est pas prise en charge pour les procédures stockées compilées en mode natif.
Caractéristique LEN et SUBSTRING avec un argument dans un ordre de tri SC Les chaînes de caractères avec un classement _SC utilisent l’encodage UTF-16. Les fonctions intégrées LEN et SUBSTRING, lorsqu’elles sont utilisées dans des procédures stockées compilées en mode natif, ne prennent pas en charge l’encodage UTF-16. Utilisez un classement différent ou évitez d’utiliser ces fonctions.
Caractéristique Exécution à partir de la connexion administrateur dédiée. Les procédures stockées compilées en mode natif ne peuvent pas être exécutées à partir de la connexion d’administration dédiée (DAC). Utilisez plutôt une connexion régulière.
Opération ALTER PROCEDURE Les procédures stockées compilées en mode natif ne peuvent pas être modifiées. Pour modifier la définition de la procédure, supprimez et recréez la procédure stockée.
Opération point de sauvegarde Les procédures stockées compilées en mode natif ne peuvent pas être appelées à partir de transactions qui ont un point d’enregistrement actif. Supprimez le point de sauvegarde de la transaction.
Opération ALTER AUTHORIZATION La modification du propriétaire d’une table mémoire optimisée existante ou d’une procédure stockée compilée en mode natif n’est pas prise en charge. Supprimez et recréez la table ou la procédure pour modifier la propriété.
Opérateur OPENROWSET Cet opérateur n’est pas pris en charge. Supprimez OPENROWSET de la procédure stockée compilée en mode natif.
Opérateur OPENQUERY Cet opérateur n’est pas pris en charge. Supprimez OPENQUERY de la procédure stockée compilée en mode natif.
Opérateur OPENDATASOURCE Cet opérateur n’est pas pris en charge. Supprimez OPENDATASOURCE de la procédure stockée compilée en mode natif.
Opérateur OPENXML Cet opérateur n’est pas pris en charge. Supprimez OPENXML de la procédure stockée compilée en mode natif.
Opérateur CONTAINSTABLE Cet opérateur n’est pas pris en charge. Supprimez CONTAINSTABLE de la procédure stockée compilée en mode natif.
Opérateur FREETEXTTABLE Cet opérateur n’est pas pris en charge. Supprimez FREETEXTTABLE de la procédure stockée compilée en mode natif.
Caractéristique Fonctions retournant des tables Les fonctions de type table ne peuvent pas être référencées par des procédures stockées compilées nativement. Une solution de contournement possible pour cette restriction consiste à ajouter la logique dans les fonctions table au corps de la procédure.
Opérateur CHANGETABLE Cet opérateur n’est pas pris en charge. Supprimez CHANGETABLE de la procédure stockée compilée en mode natif.
Opérateur GOTO Cet opérateur n’est pas pris en charge. Utilisez d’autres constructions procédurales telles que WHILE.
Opérateur EXECUTE, INSERT EXEC L’imbrication des procédures stockées compilées en mode natif n’est pas prise en charge. Les opérations requises peuvent être spécifiées inline, dans le cadre de la définition de procédure stockée.
Opérateur DÉCALAGE Cet opérateur n’est pas pris en charge. Supprimez OFFSET de la procédure stockée compilée en mode natif.
Opérateur UNION Cet opérateur n’est pas pris en charge. Supprimez UNION de la procédure stockée compilée en mode natif. La combinaison de plusieurs jeux de résultats en un seul jeu de résultats peut être effectuée à l’aide d’une variable de table.
Opérateur ENTRECROISER Cet opérateur n’est pas pris en charge. Supprimez INTERSECT de la procédure stockée compilée en mode natif. Dans certains cas, on peut utiliser une jointure interne pour arriver au même résultat.
Opérateur SAUF Cet opérateur n’est pas pris en charge. Supprimez EXCEPT de la procédure stockée compilée en mode natif.
Opérateur JOINTURE EXTERNE Cet opérateur n’est pas pris en charge. Supprimez OUTER JOIN de la procédure stockée compilée en mode natif. Pour plus d’informations, consultez Implémentation d’une jointure externe.
Opérateur APPLIQUER Cet opérateur n’est pas pris en charge. Supprimez APPLY de la procédure stockée compilée en mode natif.
Opérateur PIVOT Cet opérateur n’est pas pris en charge. Supprimez PIVOT de la procédure stockée compilée en mode natif.
Opérateur UNPIVOT Cet opérateur n’est pas pris en charge. Supprimez UNPIVOT de la procédure stockée compilée en mode natif.
Opérateur OU, DANS La disjonction (OR, IN) n’est pas prise en charge dans la clause WHERE des requêtes dans les procédures stockées compilées en mode natif. Créez des requêtes pour chacun des cas.
Opérateur CONTIENT Cet opérateur n’est pas pris en charge. Supprimez CONTAINS de la procédure stockée compilée en mode natif.
Opérateur texte libre Cet opérateur n’est pas pris en charge. Supprimez FREETEXT de la procédure stockée compilée en mode natif.
Opérateur NON Cet opérateur n’est pas pris en charge. Supprimez NOT de la procédure stockée compilée en mode natif. Dans certains cas, NOT peut être remplacé par l’inégalité. Par exemple, NOT a=b peut être remplacé par a!=b.
Opérateur TSEQUAL Cet opérateur n’est pas pris en charge. Supprimez TSEQUAL de la procédure stockée compilée en mode natif.
Opérateur COMME Cet opérateur n’est pas pris en charge. Supprimez LIKE de la procédure stockée compilée en mode natif.
Opérateur VALEUR SUIVANTE POUR Les séquences ne peuvent pas être référencées à l’intérieur de procédures stockées compilées en mode natif. Obtenez la valeur à l’aide de Transact-SQL interprétée, puis passez-la dans la procédure stockée compilée en mode natif. Pour plus d’informations, consultez Implémenter IDENTITY dans une table Memory-Optimized.
Option Set option Les options SET ne peuvent pas être modifiées à l’intérieur des procédures stockées compilées en mode natif. Certaines options peuvent être définies avec l’instruction BEGIN ATOMIC. Pour plus d’informations, consultez la section sur les blocs atoniques dans les procédures stockées compilées en mode natif.
Opérande TABLESAMPLE Cet opérateur n’est pas pris en charge. Supprimez TABLESAMPLE de la procédure stockée compilée en mode natif.
Choix RECOMPILER Les procédures stockées compilées en mode natif sont compilées au moment de la création. Pour recompiler une procédure stockée compilée en mode natif, supprimez-la et recréez-la. Supprimez RECOMPILE de la définition de procédure.
Choix CHIFFREMENT Cette option n’est pas prise en charge. Supprimez ENCRYPTION de la définition de procédure.
Choix POUR RÉPLICATION Les procédures stockées compilées en mode natif ne peuvent pas être créées pour la réplication. FOR REPLICATION Supprimé de la définition de procédure.
Choix FOR XML Cette option n’est pas prise en charge. Supprimez FOR XML de la procédure stockée compilée en mode natif.
Choix POUR PARCOURIR Cette option n’est pas prise en charge. Supprimez FOR BROWSE de la procédure stockée compilée en mode natif.
Indicateur de jointure HASH, MERGE Les procédures stockées compilées en mode natif prennent uniquement en charge les jointures de boucles imbriquées. Les jointures de hachage et de fusion ne sont pas prises en charge. Supprimez l’indicateur de jointure.
Indicateur de requête Indicateur de requête Cet indicateur de requête n’est pas à l’intérieur des procédures stockées compilées en mode natif. Pour connaître les indicateurs de requête pris en charge, consultez indicateurs de requête (Transact-SQL).
Choix DISTINCT Cette option n’est pas prise en charge. Supprimer DISTINCT de la requête dans la procédure stockée compilée en mode natif.
Choix POURCENT Cette option n’est pas prise en charge avec les clauses TOP. Supprimez PERCENT de la requête dans la procédure stockée compilée en mode natif.
Choix AVEC DES LIENS Cette option n’est pas prise en charge avec TOP clauses. Supprimez WITH TIES de la requête dans la procédure stockée compilée en mode natif.
Fonction d’agrégation Fonction d’agrégation Cette clause n’est pas prise en charge. Pour plus d’informations sur les fonctions d’agrégation dans les procédures stockées compilées en mode natif, consultez Procédures stockées compilées en mode natif.
Fonction de classement Fonction de classement Les fonctions de classement ne sont pas prises en charge dans les procédures stockées compilées en mode natif. Supprimez-les de la définition de procédure.
Fonction Fonction Cette fonction n’est pas prise en charge. Supprimez-la de la procédure stockée compilée en mode natif.
Déclaration instruction Cette déclaration n'est pas soutenue. Supprimez-la de la procédure stockée compilée en mode natif.
Caractéristique MIN et MAX utilisés avec des chaînes binaires et de caractères Les fonctions MIN d’agrégation et MAX ne peuvent pas être utilisées pour les valeurs de chaîne de caractères et binaires à l’intérieur des procédures stockées compilées en mode natif.
Caractéristique GROUP BY sans fonction d’agrégation Dans les procédures stockées compilées en mode natif, lorsqu’une requête a une GROUP BY clause, la requête doit également utiliser une fonction d’agrégation dans la clause SELECT ou HAVING. Ajoutez une fonction d’agrégation à la requête.
Caractéristique REGROUPER PAR TOUS ALL ne peut pas être utilisé avec des clauses GROUP BY dans des procédures stockées compilées en mode natif. Supprimez ALL de la clause GROUP BY.
Caractéristique GROUP BY () Le groupement par une liste vide n'est pas supporté. Supprimez la clause GROUP BY ou incluez des colonnes dans la liste de regroupements.
Caractéristique CUMUL ROLLUP ne peut pas être utilisé avec GROUP BY clauses dans les procédures stockées compilées nativement. Supprimez ROLLUP de la définition de procédure.
Caractéristique CUBE CUBE ne peut pas être utilisé avec les clauses GROUP BY dans les procédures stockées compilées en mode natif. Supprimez CUBE de la définition de procédure.
Caractéristique ENSEMBLES DE REGROUPEMENTS GROUPING SETS ne peut pas être utilisé avec des clauses GROUP BY dans les procédures stockées compilées en mode natif. Supprimez GROUPING SETS de la définition de procédure.
Caractéristique DÉBUT DE TRANSACTION, VALIDATION DE TRANSACTION et ANNULATION DE TRANSACTION Utilisez des blocs ATOMIC pour contrôler les transactions et la gestion des erreurs. Pour plus d’informations, consultez Atomic Blocks.
Caractéristique Déclarations de variables de table en ligne. Les variables de table doivent référencer des types de tables mémoire optimisés explicitement. Vous devez créer un type de table à mémoire optimisée et utiliser ce type pour la déclaration de variable, plutôt que de spécifier le type inline.
Caractéristique sp_recompile La recompilation des procédures stockées compilées en mode natif n’est pas prise en charge. Supprimez et recréez la procédure.
Caractéristique EXÉCUTER SOUS L'IDENTITÉ DE L’APPELANT La EXECUTE AS clause est requise. Mais EXECUTE AS CALLER n’est pas pris en charge. Utiliser EXECUTE AS OWNER, EXECUTE ASutilisateur ou EXECUTE AS SELF.
Caractéristique Tables sur disque Les tables sur disque ne sont pas accessibles à partir de procédures stockées compilées en mode natif. Supprimez les références aux tables sur disque des procédures stockées compilées en mode natif. Vous pouvez également migrer la ou les tables sur disque vers la mémoire optimisée.
Caractéristique Points de vue Les vues ne sont pas accessibles à partir de procédures stockées compilées en mode natif. Au lieu des vues, référencez les tables de base sous-jacentes.
Caractéristique Fonctions table Les fonctions avec valeur de table ne peuvent pas être appelées à partir de procédures stockées compilées de manière native. Supprimez les références aux fonctions valeur de table de la procédure stockée nativement compilée.

Transactions qui accèdent aux tables Memory-Optimized

Le tableau suivant répertorie les fonctionnalités et mots clés Transact-SQL qui peuvent apparaître dans le texte du message d’une erreur impliquant des transactions qui accèdent aux tables optimisées en mémoire, ainsi que l’action corrective pour résoudre l’erreur.

Catégorie Nom Résolution
Caractéristique point de sauvegarde La création de points d’enregistrement explicites dans les transactions qui accèdent aux tables optimisées en mémoire n’est pas prise en charge.
Caractéristique transaction liée Les sessions liées ne peuvent pas participer aux transactions qui accèdent aux tables optimisées en mémoire. Ne liez pas la session avant d’exécuter la procédure.
Caractéristique DTC Les transactions qui accèdent aux tables optimisées en mémoire ne peuvent pas être des transactions réparties.

Voir aussi

Migration vers In-Memory OLTP