Share via


Constructions Transact-SQL non prises en charge par l’OLTP en mémoire

Les tables mémoire optimisées et les procédures stockées compilées en mode natif ne prennent pas en charge la surface d’exposition Transact-SQL complète prise en charge par les tables sur disque et les procédures stockées Transact-SQL interprétées. Lorsque vous tentez d'utiliser 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) et le nom de la fonctionnalité ou du mot clé Transact-SQL. La plupart des fonctionnalités qui ne sont pas 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 les tables optimisées en mémoire et les procédures stockées compilées en mode natif, consultez :

Bases de données qui utilisent OLTP en mémoire

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.

Type Nom Résolution
Option AUTO_CLOSE L'option de base de données AUTO_CLOSE=ON n'est pas prise en charge par les bases de données avec un groupe de fichiers MEMORY_OPTIMIZED_DATA.
Option ATTACH_REBUILD_LOG L'option de base de données CREATE ATTACH_REBUILD_LOG n'est pas prise en charge par les bases de données avec un groupe de fichiers MEMORY_OPTIMIZED_DATA.
Fonctionnalité DATABASE SNAPSHOT La création d'instantanés de base de données n'est pas prise en charge par les bases de données avec un groupe de fichiers MEMORY_OPTIMIZED_DATA.
Fonctionnalité Réplication à l'aide de sync_method 'database snapshot' ou 'database snapshot character' La réplication à l'aide de sync_method 'database snapshot' ou 'database snapshot character' n'est pas prise en charge par les bases de données avec un groupe de fichiers MEMORY_OPTIMIZED_DATA.
Fonctionnalité DBCC CHECKDB

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

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

Tables optimisées en mémoire

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

Type Nom Résolution
Fonctionnalité 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 spécifié n'est pas pris en charge. Remplacez le type par un des types de données pris en charge. Pour plus d’informations, consultez Types de données pris en charge.
Fonctionnalité Colonnes calculées Les colonnes calculées ne sont pas prises en charge pour les tables mémoire optimisées. Supprimez les colonnes calculées de l'instruction CREATE TABLE.
Fonctionnalité Réplication La réplication n'est pas pris en charge avec les tables mémoire optimisées.
Fonctionnalité FILESTREAM Le stockage FILESTREAM n'est pas pris en charge pour les colonnes de tables mémoire optimisées. Supprimez le mot clé FILESTREAM de la définition de colonne.
Fonctionnalité SPARSE Les colonnes de tables mémoire optimisées ne peuvent pas être définies comme SPARSE. Supprimez le mot clé SPARSE de la définition de colonne.
Fonctionnalité ROWGUIDCOL L'option ROWGUIDCOL n'est pas prise en charge pour les colonnes de tables mémoire optimisées. Supprimez le mot clé ROWGUIDCOL de la définition de colonne.
Fonctionnalité FOREIGN KEY Les contraintes FOREIGN KEY ne sont pas prises en charge pour les tables mémoire optimisées. Supprime la contrainte de la définition de table.

Pour plus d’informations sur la façon d’atténuer l’absence de prise en charge des contraintes, consultez Migration des contraintes de vérification et de clé étrangère.
Fonctionnalité CHECK Les contraintes CHECK ne sont pas prises en charge pour les tables mémoire optimisées. Supprime la contrainte de la définition de table.

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

Pour plus d’informations sur la façon d’atténuer l’absence de prise en charge des contraintes, consultez Migration des contraintes de vérification et de clé étrangère.
Fonctionnalité COLUMNSTORE Les index COLUMNSTORE ne sont pris en charge avec les tables mémoire optimisées. Spécifiez un index NONCLUSTERED ou NONCLUSTERED HASH à la place.
Fonctionnalité index cluster Spécifiez un index non cluster. Dans le cas d'un index de clé principale, veillez à spécifier PRIMARY KEY NONCLUSTERED [HASH].
Fonctionnalité page de codes autre que 1252 Les colonnes de tables mémoire optimisées avec les types de données char et varchar doivent utiliser la page de codes 1252. Utilisez n(var)char plutôt que (var)char, ou utilisez un classement avec la page de codes 1252 (par exemple, Latin1_General_BIN2). Pour plus d'informations, consultez Collations and Code Pages.
Fonctionnalité Transactions dans DDL Les tables mémoire optimisées 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 commencez pas de transaction et veillez à ce que le paramètre de session IMPLICIT_TRANSACTIONS ait la valeur OFF avant d'exécuter l'instruction CREATE ou DROP.
Fonctionnalité déclencheurs DDL Les tables mémoire optimisées 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 base de données dans l'instruction CREATE/DROP TABLE et CREATE/DROP PROCEDURE.
Fonctionnalité EVENT NOTIFICATION Les tables mémoire optimisées 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énement de serveur et de base de données sur CREATE TABLE ou DROP TABLE et CREATE PROCEDURE ou DROP PROCEDURE.
Fonctionnalité FileTable Les tables mémoire optimisées ne peuvent pas être créées en tant que tables de fichiers. Supprimez l'argument AS FileTable de l'instruction CREATE TABLE.
Opération Mettre à jour les colonnes clés primaires Les colonnes clés primaires des tables mémoire optimisées et les types de table ne peuvent pas être mis à 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 CREATE 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 mémoire optimisée, supprimez et recréez la table, notamment la spécification du nouvel index.
Opération ALTER TABLE La modification des tables mémoire optimisées n'est pas prise en charge. Supprimez et recréez la table en utilisant la définition de table mise à jour.
Opération CREATE FULLTEXT INDEX Les index de recherche en texte intégral ne sont pas pris en charge pour les tables mémoire optimisées.
Opération modification de schéma Les tables mémoire optimisées et les procédures stockées compilées en mode natif ne prennent pas en charge les modifications de schéma, par exemple sp_rename.

Les tentatives de modification du schéma, telles que l'affectation d'un nouveau nom à une table, génèrent l'erreur 12320, les opérations qui nécessitent une modification de la version du schéma, par exemple l'affectation d'un nouveau nom, ne sont pas prises en charge par les tables mémoire optimisées.

Pour modifier le schéma, supprimez et recréez la table ou la procédure en utilisant une définition mise à jour.
Opération CREATE TRIGGER Les déclencheurs sur les tables mémoire optimisées ne sont pas pris en charge.
Opération TRUNCATE TABLE L'opération TRUNCATE n'est pas prise en charge pour les tables mémoire optimisées. Pour supprimer toutes les lignes d’une table, supprimez toutes les lignes à l’aide DELETE FROM d’une table ou supprimez et recréez la table.
Opération ALTER AUTHORIZATION La modification du propriétaire d'une table mémoire optimisée ou d'une procédure stockée compilée en mode natif existante n'est pas prise en charge. Supprimez ou 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 mémoire optimisée ou d'une procédure stockée compilée en mode natif existante n'est pas prise en charge. Supprimez ou 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ées.
Fonctionnalité ANSI_PADDING OFF L'option de session ANSI_PADDING doit être activée (ON) lorsque vous créez des tables mémoire optimisées ou des procédures stockées compilées en mode natif. Exécutez SET ANSI_PADDING ON avant d'exécuter l'instruction CREATE.
Option DATA_COMPRESSION La compression des données n'est pas prise en charge pour les tables optimisées en mémoire. Supprimez l'option de la définition de table.
Fonctionnalité 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.
Fonctionnalité MARS (Multiple Active Result Sets) Multiple Active Result Sets (MARS) n'est pas pris en charge avec les tables mémoire optimisées. Cette erreur peut également indiquer l'utilisation d'un serveur lié. Un serveur lié peut utiliser MARS. Les serveurs liés ne sont pas pris en charge avec les tables mémoire optimisées. À la place, connectez-vous directement au serveur et à la base de données qui héberge les tables mémoire optimisées.
Opération Tables optimisées en mémoire comme cibles de MERGE Les tables mémoire optimisées ne peuvent pas être la cible d'une opération MERGE. Utilisez des instructions INSERT, UPDATE ou DELETE à la place.

Index sur des tables optimisées en mémoire

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 mémoire optimisée, ainsi que l’action corrective pour résoudre l’erreur.

Type Nom Résolution
Fonctionnalité Index filtré Les index filtrés ne sont pris en charge avec les tables optimisées en mémoire. Omettez la clause WHERE de la spécification d'index.
Fonctionnalité UNIQUE Les index uniques ne sont pas pris en charge pour les tables mémoire optimisées. Supprimez l'argument UNIQUE de la spécification d'index.
Fonctionnalité Colonnes nullable Toutes les colonnes d'une clé d'index sur une table mémoire optimisée doivent être spécifiés en tant que NOT NULL. Incluez la contrainte NOT NULL avec toutes les colonnes des clés d'index.
Fonctionnalité classement non-bin2 Toutes les colonnes de caractères d'une clé d'index sur une table mémoire optimisée doivent être déclarés en tant que classement BIN2. Utilisez la clause COLLATE pour définir le classement dans la définition de colonne. Pour plus d'informations, consultez Collations and Code Pages.
Fonctionnalité Colonnes incluses La spécification de colonnes incluses n'est pas nécessaire pour les tables mémoire optimisées. Toutes les colonnes de la table mémoire optimisée sont incluses implicitement dans chaque index mémoire optimisé.
Opération ALTER INDEX La modification des index sur les tables mémoire optimisées n'est pas prise en charge. À la place, supprimez et recréez la table en utilisant la spécification d'index mise à jour.
Opération DROP INDEX La suppression des index sur les tables mémoire optimisées n'est pas prise en charge. À la place, supprimez et recréez la table en utilisant 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 les tables mémoire optimisées. Supprimez l'option de la spécification d'index.

Index de hachage non cluster

Le tableau suivant répertorie les fonctionnalités et mots clés Transact-SQL qui peuvent apparaître dans le texte d’un message d’erreur impliquant un index de hachage non cluster, ainsi que l’action corrective pour résoudre l’erreur.

Type Nom Résolution
Option ASC/DESC Les index de hachage non cluster 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.

Type Fonctionnalité Résolution
Fonctionnalité Variables de table inline Les types de table ne peuvent pas être déclarés inline avec des déclarations de variable. Les types de table doivent être déclarés explicitement à l'aide d'une instruction CREATE TYPE.
Fonctionnalité 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 , à la place, spécifiez directement le nom de la procédure.

- 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, au lieu d’utiliser un curseur, utilisez une logique basée sur des ensembles ou une WHILE boucle.
Fonctionnalité Valeurs par défaut non constantes des paramètres Lors de l'utilisation des valeurs par défaut avec des paramètres sur les procédures stockées compilées en mode natif, les valeurs doivent être constantes. Supprimez les caractères génériques des déclarations de paramètre.
Fonctionnalité EXTERNAL 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.
Fonctionnalité Procédures stockées numérotées Les procédures stockées compilées en mode natif ne peuvent pas être numérotées. Supprimez le ;numéro de l’instruction CREATE PROCEDURE .
Fonctionnalité Instructions INSERT ... VALUES multilignes Impossible d'insérer plusieurs lignes en utilisant la même instruction INSERT dans une procédure stockée compilée en mode natif. Créez des instructions INSERT pour chaque ligne.
Fonctionnalité Expressions de table communes Les expressions de table communes ne sont pas prises en charge dans les procédures stockées compilées en mode natif. Réécrire la requête.
Fonctionnalité sous-requête Les sous-requêtes (requêtes imbriquées dans une autre requête) ne sont pas prises en charge. Réécrire la requête.
Fonctionnalité COMPUTE La clause COMPUTE n'est pas prise en charge. Supprimez-la de la requête.
Fonctionnalité SELECT INTO La clause INTO n'est pas prise en charge avec l'instruction SELECT. Réécrire la requête en tant que INSERT INTOTableSELECT.
Fonctionnalité OUTPUT La clause OUTPUT n'est pas prise en charge. Supprimez-la de la requête.
Fonctionnalité liste de colonnes d'insertion incomplète Dans les instructions INSERT, des 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. Supprimez 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.
Fonctionnalité CASE L'instruction CASE n'est pas prise en charge dans les requêtes à l'intérieur de 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.
Fonctionnalité 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.
Fonctionnalité 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 dans la procédure.
Fonctionnalité métadonnées de modes de navigation Les procédures stockées compilées en mode natif ne prennent pas en charge les métadonnées de modes de navigation. Assurez-vous que l'option de session NO_BROWSETABLE est désactivée (OFF).
Fonctionnalité DELETE avec la clause FROM La clause FROM n'est pas prise en charge pour les instructions DELETE avec une table source dans les procédures stockées compilées en mode natif.

DELETE avec la clause FROM est prise en charge lorsqu'elle est utilisée pour indiquer de la table dans laquelle la suppression doit avoir lieu.
Fonctionnalité 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.
Fonctionnalité procédures temporaires Les procédures stockées temporaires ne peuvent pas être compilées en mode natif. Créez une procédure stockée compilée en mode natif permanent ou une procédure stockée Transact-SQL interprétée temporairement.
Niveau d'isolation READ UNCOMMITTED 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 READ COMMITTED 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.
Fonctionnalité tables temporaires Les tables de tempdb ne peuvent pas être utilisées dans les procédures stockées compilées en mode natif. À la place, utilisez une variable de table ou une table mémoire optimisée avec DURABILITY=SCHEMA_ONLY.
Fonctionnalité MARS MARS (multiple Active Results Sets) n'est pas pris en charge avec les procédures stockées compilées en mode natif. Cette erreur peut également indiquer l'utilisation d'un serveur lié. Un 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. À la place, connectez-vous directement au serveur et à la base de données qui héberge les procédures stockées compilées en mode natif.
Fonctionnalité 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.
Fonctionnalité 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 exigent l'utilisation d'un classement BIN2. Utilisez la clause COLLATE ou des colonnes et des variables avec un classement approprié. Pour plus d'informations, consultez Collations and Code Pages.
Fonctionnalité Troncation des chaînes de caractères avec un classement SC. Les chaînes de caractères avec un classement _SC utilisent le codage UTF-16. La conversion d'une valeur n(var)char en valeur n(var)char plus courte implique la troncation. Cette opération n'est pas prise en charge pour les valeurs UTF-16 dans les procédures stockées compilées en mode natif. Évitez la troncation de chaînes UTF-16.
Fonctionnalité EXECUTE WITH RECOMPILE L'option WITH RECOMPILE n'est pas pris en charge avec les procédures stockées compilées en mode natif.
Fonctionnalité LEN et SUBSTRING avec un argument dans un classement SC Les chaînes de caractères avec un classement _SC utilisent le codage UTF-16. Les fonctions intégrées LEN et SUBSTRING, utilisées dans des procédures stockées compilées en mode natif, ne prennent pas en charge l'encodage UTF-16. Utilisez un autre classement ou évitez d'utiliser ces fonctions.
Fonctionnalité 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 administrateur dédiée. Utilisez plutôt une connexion normale.
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 d'enregistrement Les procédures stockées compilées en mode natif ne peuvent pas être appelées à partir de transactions qui possèdent un point de sauvegarde 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 ou d'une procédure stockée compilée en mode natif existante n'est pas prise en charge. Supprimez ou 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.
Fonctionnalité fonctions table Les fonctions table ne peuvent pas être référencées à partir de procédures stockées compilées en mode natif. Une solution de contournement possible pour cette restriction consiste à ajouter la logique des fonctions tables 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 de procédure, telles que WHILE.
Opérateur EXECUTE, INSERT EXEC L'imbrication de procédures stockées compilées en mode natif n'est pas prise en charge. Les opérations nécessaires peuvent être spécifiées inline, dans le cadre de la définition de procédure stockée.
Opérateur OFFSET 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 jeu de résultats unique peut être effectuée en utilisant une variable de table.
Opérateur INTERSECT Cet opérateur n'est pas pris en charge. Supprimez INTERSECT de la procédure stockée compilée en mode natif. Dans certain cas, INNER JOIN permet d'obtenir le même résultat.
Opérateur EXCEPT Cet opérateur n'est pas pris en charge. Supprimez EXCEPT de la procédure stockée compilée en mode natif.
Opérateur OUTER JOIN 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 APPLY 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 OR, IN La disjonction (OR, IN) n'est pas prise en charge dans la clause WHERE pour les requêtes dans les procédures stockées compilées en mode natif. Créez des requêtes pour chaque cas.
Opérateur CONTAINS Cet opérateur n'est pas pris en charge. Supprimez CONTAINS de la procédure stockée compilée en mode natif.
Opérateur FREETEXT Cet opérateur n'est pas pris en charge. Supprimez FREETEXT de la procédure stockée compilée en mode natif.
Opérateur NOT 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 une 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 LIKE Cet opérateur n'est pas pris en charge. Supprimez LIKE de la procédure stockée compilée en mode natif.
Opérateur NEXT VALUE FOR Les séquences ne peuvent pas être référencées dans les procédures stockées compilées en mode natif. Obtenez la valeur à l’aide de Transact-SQL interprété, puis passez-la dans la procédure stockée compilée en mode natif. Pour plus d’informations, consultez Implémentation d’IDENTITY dans une table mémoire optimisée.
Option Set option Les options SET peuvent être modifiées dans les 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 atomiques dans Natively Compiled Stored Procedures.
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.
Option RECOMPILE 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, puis recréez-la. Supprimer RECOMPILE de la définition de procédure.
Option ENCRYPTION Cette option n'est pas prise en charge. Supprimer ENCRYPTION de la définition de procédure.
Option FOR REPLICATION Les procédures stockées compilées en mode natif ne peuvent pas être créées pour la réplication. Supprimez FOR REPLICATION de la définition de procédure.
Option FOR XML Cette option n'est pas prise en charge. Supprimez FOR XML de la procédure stockée compilée en mode natif.
Option FOR BROWSE 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 ne prennent en charge que 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 pris en charge dans les 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).
Option DISTINCT Cette option n'est pas prise en charge. Supprimez DISTINCT de la requête dans la procédure stockée compilée en mode natif.
Option PERCENT 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.
Option WITH TIES Cette option n'est pas prise en charge avec les clauses TOP. 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 Natively Compiled Stored Procedures.
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.
. Instruction Cette instruction n'est pas prise en charge. Supprimez-la de la procédure stockée compilée en mode natif.
Fonctionnalité MIN et MAX utilisé avec des chaînes binaires et de caractères Les fonctions d'agrégation MIN et MAX ne peuvent pas être utilisées pour les valeurs de chaîne de caractère et binaire dans les procédures stockées compilées en mode natif.
Fonctionnalité GROUP BY sans fonction d'agrégation Dans les procédures stockées compilées en mode natif, lorsqu'une requête contient une clause GROUP BY, elle doit également utiliser une fonction d'agrégation dans la clause SELECT ou HAVING. Ajoutez une fonction d'agrégation à la requête.
Fonctionnalité GROUP BY ALL ALL ne peut pas être utilisé avec les clauses GROUP BY dans des procédures stockées compilées en mode natif. Supprimez ALL de la clause GROUP BY.
Fonctionnalité GROUP BY () Le regroupement par une liste vide n'est pas pris en charge. Supprimez la clause GROUP BY, ou incluez des colonnes dans la liste de regroupement.
Fonctionnalité ROLLUP ROLLUP ne peut pas être utilisé avec les clauses GROUP BY dans des procédures stockées compilées en mode natif. Supprimer ROLLUP de la définition de procédure.
Fonctionnalité CUBE CUBE ne peut pas être utilisé avec les clauses GROUP BY dans des procédures stockées compilées en mode natif. Supprimer CUBE de la définition de procédure.
Fonctionnalité GROUPING SETS GROUPING SETS ne peut pas être utilisé avec les clauses GROUP BY dans des procédures stockées compilées en mode natif. Supprimer GROUPING SETS de la définition de procédure.
Fonctionnalité BEGIN TRANSACTION, COMMIT TRANSACTION et ROLLBACK TRANSACTION Utilisez des blocs ATOMIC pour contrôler les transactions et la gestion des erreurs. Pour plus d’informations, consultez Atomic Blocks.
Fonctionnalité Déclarations de variables de table inline. Les variables de table doivent référencer les types de tables mémoire optimisées définis. 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 spécifier le type inline.
Fonctionnalité sp_recompile La recompilation de procédures stockées compilées en mode natif n'est pas prise en charge. Supprimez et recréez la procédure.
Fonctionnalité EXECUTE AS CALLER La clause EXECUTE AS est obligatoire. Mais EXECUTE AS CALLER n'est pas prise en charge. Utilisez EXECUTE AS OWNER, EXECUTE ASuser ou EXECUTE AS SELF.
Fonctionnalité 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 dans les procédures stockées compilées en mode natif. Sinon, migrez les tables sur disques vers des tables mémoire optimisées.
Fonctionnalité Les vues Les vues ne sont pas accessibles à partir de procédures stockées compilées en mode natif. Au lieu d'utiliser des vues, référencez les tables de base sous-jacentes.
Fonctionnalité Fonctions table Les fonctions table ne sont pas accessibles à partir de procédures stockées compilées en mode natif. Supprimez les références aux fonctions table dans les procédures stockées compilées en mode natif.

Transactions qui accèdent aux tables mémoire optimisées

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 à des tables à mémoire optimisée, ainsi que l’action corrective pour résoudre l’erreur.

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

Voir aussi

Migration vers OLTP en mémoire