Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Les tables optimisées en mémoire, les procédures stockées compilées en mode natif et les fonctions définies par l’utilisateur ne prennent pas en charge la totalité de la surface d’exposition Transact-SQL qui est prise en charge par les tables sur disque, les procédures stockées Transact-SQL interprétées et les fonctions définies par l’utilisateur. Lorsque vous tentez d'utiliser une des fonctionnalités non prises en charge, le serveur retourne une erreur.
Le texte du message d’erreur indique 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 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 les mots clés Transact-SQL qui peuvent s’afficher dans le texte du message d’erreur, ainsi que l’action corrective à entreprendre 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 :
Problèmes de migration pour les procédures stockées compilées en mode natif
Fonctionnalités SQL Server non prises en charge pour l’OLTP en mémoire
Bases de données qui utilisent OLTP en mémoire
Le tableau suivant répertorie les fonctionnalités Transact-SQL non prises en charge, ainsi que les mots clés qui peuvent apparaître dans le texte du message d’une erreur impliquant une base de données OLTP en mémoire. Ce tableau indique également la résolution de l’erreur.
| Type | Nom | Résolution |
|---|---|---|
| Option | FERMETURE AUTOMATIQUE | 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 INSTANTANÉ | 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 à mémoire optimisée
Le tableau suivant répertorie les fonctionnalités Transact-SQL non prises en charge, ainsi que les mots clés qui peuvent apparaître dans le texte du message d’une erreur impliquant une table optimisée en mémoire. Ce tableau indique également la résolution de 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 . Toutes les tables optimisées en mémoire sont associées à un groupe de fichiers/données optimisé en mémoire. |
| 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 pour l’OLTP en mémoire. |
| Fonctionnalité | Colonnes calculées |
S’applique à : SQL Server 2014 (12.x) et SQL Server 2016 (13.x) 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 . Azure SQL Database et SQL Server (à partir de SQL Server 2017 (14.x)) prennent en charge les colonnes calculées dans les index et tables à mémoire optimisée. |
| Fonctionnalité | Réplication | La réplication n'est pas prise en charge avec les tables optimisées en mémoire. |
| 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é | CLÉ ÉTRANGÈRE |
S’applique à : Azure SQL Database et SQL Server (à partir de SQL Server 2016 (13.x)) Pour les tables à mémoire optimisée, les contraintes FOREIGN KEY ne sont prises en charge que pour les clés étrangères qui référencent des clés primaires d’autres tables à mémoire optimisée. Supprimez la contrainte de la définition de table si la clé étrangère fait référence à une contrainte unique. Dans SQL Server 2014 (12.x), les contraintes FOREIGN KEY ne sont pas prises en charge par les tables à mémoire optimisée. |
| Fonctionnalité | index clusterisé | Spécifiez un index non cluster. Dans le cas d’un index de clé primaire, veillez à spécifier PRIMARY KEY NONCLUSTERED. |
| 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 démarrez pas une transaction et vérifiez que le paramètre IMPLICIT_TRANSACTIONS de session est 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 de base de données sur 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énements de serveur et de base de données sur CREATE TABLE ou DROP TABLECREATE PROCEDURE ou .DROP PROCEDURE |
| Fonctionnalité | FileTable | Les tables mémoire optimisées ne peuvent pas être créées en tant que tables de fichiers. Supprimer 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 ou avec l’instruction ALTER TABLE . |
| 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ée et les procédures stockées compilées en mode natif ne prennent pas en charge certaines modifications de schéma : Azure SQL Database et SQL Server à partir de SQL Server 2017 (14.x) : ALTER TABLE, ALTER PROCEDURE et les opérations sp_rename sont prises en charge. Les autres modifications de schéma, telles que l’ajout des propriétés étendues, ne sont pas prises en charge. SQL Server 2016 (13.x) : les opérations ALTER TABLE et ALTER PROCEDURE sont prises en charge. Les autres modifications de schéma, telles que sp_rename, ne sont pas prises en charge. SQL Server 2014 (12.x) : les modifications de schéma ne sont pas prises en charge. Pour modifier la définition d’une table à mémoire optimisée ou d’une procédure stockée compilée en mode natif, supprimez l’objet, puis recréez-le avec la définition souhaitée. |
| Opération | TRUNCATE 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 de DELETE FROMtable ou supprimez la table et recréez-la. |
| 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 puis recréez la table ou la procédure pour changer de propriétaire. |
| Opération | ALTER SCHEMA | Le transfert d’une table existante ou d’une procédure stockée compilée en mode natif vers un autre schéma n’est pas pris en charge. Pour changer de schéma, supprimez, puis recréez l’objet. |
| Opération | DBCC CHECKTABLE | DBCC CHECKTABLE n’est pas pris en charge par les tables à mémoire optimisée. Pour vérifier l’intégrité des fichiers de point de contrôle sur disque, effectuez une sauvegarde du groupe de fichiers MEMORY_OPTIMIZED_DATA. |
| Fonctionnalité | 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. |
| Option | COMPRESSION_DES_DONNÉES | 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 la 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. |
| Opération | Tables optimisées en mémoire comme cible de MERGE | Les tables optimisées en mémoire ne peuvent pas être la cible de l’opération MERGE. Utilisez plutôt les instructions INSERT, UPDATE et DELETE. |
Index sur les tables optimisées en mémoire
Le tableau suivant répertorie les fonctionnalités et les mots clés Transact-SQL qui peuvent s’afficher dans le texte d’un message d’erreur qui implique un index sur une table optimisée en mémoire, ainsi que l’action corrective à entreprendre pour résoudre l’erreur.
| Type | Nom | Résolution |
|---|---|---|
| Fonctionnalité | Index filtré | Les index filtrés ne sont pas pris en charge sur les tables optimisées en mémoire. Omettez la clause WHERE de la spécification d'index. |
| 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 | DROP INDEX | La suppression des index sur les tables optimisées en mémoire n'est pas prise en charge. Vous pouvez supprimer des index à l’aide ALTER TABLEde . Pour plus d’informations, consultez Modification des tables mémoire optimisées. |
| Option d’indexation | Option d’index | Une seule option d’index est prise en charge : BUCKET_COUNT pour les index de hachage. |
Index de hachage non clusterisés
Le tableau suivant répertorie les fonctionnalités et les mots clés Transact-SQL qui peuvent s’afficher dans le texte d’un message d’erreur qui implique un index de hachage non cluster, ainsi que l’action corrective à entreprendre pour résoudre l’erreur.
| Type | Nom | Résolution |
|---|---|---|
| Option | 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 et fonctions définies par l’utilisateur
Le tableau suivant répertorie les fonctionnalités Transact-SQL et les mots clés qui peuvent s’afficher dans le texte du message d’une erreur impliquant des procédures stockées compilées en mode natif et des fonctions définies par l’utilisateur, ainsi que l’action corrective à entreprendre pour résoudre l’erreur.
| Type | Fonctionnalité | Résolution |
|---|---|---|
| Fonctionnalité | 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. |
| 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 Transact-SQL EXECUTE, et spécifiez directement le nom de la procédure à la place. Lors de l’exécution de la procédure à partir d’une autre procédure stockée ou d’un lot Transact-SQL, é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, utilisez une logique basée sur un ensemble ou une boucle WHILE . |
| 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é | 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 . |
| 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. Supprimer le ;numéro de l’instruction CREATE PROCEDURE. |
| Fonctionnalité | instructions VALUES INSERT ... à plusieurs lignes | 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 instructions INSERT pour chaque ligne. |
| Fonctionnalité | expressions de table communes (CTE) | Les expressions de table communes (CTE) ne sont pas prises en charge dans les procédures stockées compilées nativement. Réécrire la requête. |
| Fonctionnalité | CALCUL | La clause COMPUTE n'est pas prise en charge. Supprimez-la de la requête. |
| Fonctionnalité | SÉLECTIONNER DANS | La clause INTO n'est pas prise en charge avec l'instruction SELECT . Réécrire la requête sous la forme INSERT INTOTableSELECT. |
| Fonctionnalité | liste de colonnes d'insertion incomplète | En général, dans les instructions INSERT, des valeurs doivent être spécifiées pour toutes les colonnes de la table. Toutefois, nous prenons en charge les contraintes DEFAULT et les colonnes IDENTITY(1,1) dans les tables optimisées en mémoire. Ces colonnes peuvent être omises de la liste des colonnes INSERT et, dans le cas des colonnes IDENTITY, doivent l’être. |
| Fonctionnalité | Fonction | Certaines fonctions intégrées ne sont pas prises en charge dans les procédures stockées compilées en mode natif. Supprimez la fonction rejetée de la procédure stockée. Pour plus d’informations sur les fonctions intégrées prises en charge, consultez Fonctionnalités prises en charge pour les modules T-SQL compilés en mode natif, ou Procédures stockées compilées en mode natif. |
| Fonctionnalité | CASE |
S’applique à : SQL Server 2014 (12.x) et SQL Server (à partir de SQL Server 2016 (13.x)) Les expressions CASE ne sont pas prises en charge dans les requêtes des 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 expression CASE dans une procédure stockée compilée en mode natif. Azure SQL Database et SQL Server (à partir de SQL Server 2017 (14.x)) prennent en charge les expressions CASE. |
| Fonctionnalité | INSERT EXECUTE | Supprimez la référence. |
| Fonctionnalité | Exécutez | Prise en charge uniquement pour exécuter des procédures stockées compilées en mode natif et des fonctions définies par l’utilisateur. |
| 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 DELETE les instructions avec une source de table dans des 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 la table à supprimer. |
| Fonctionnalité | UPDATE avec la clause FROM | La clause FROM n’est pas prise en charge dans les instructions UPDATE des procédures stockées compilées nativement. |
| Fonctionnalité | 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 permanente compilée nativement, soit une procédure stockée Transact-SQL temporaire interprétée. |
| Niveau d’isolation | LECTURE NON 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. |
| Niveau d’isolation | LECTURE VALIDÉE | Le niveau d’isolation READ COMMITTED n’est pas pris en charge pour les procédures stockées compilées nativement. 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. Utilisez plutôt une variable de table ou une table optimisée en mémoire avec DURABILITY=SCHEMA_ONLY. |
| 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é | 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. |
| 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 | point de sauvegarde | 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 puis recréez la table ou la procédure pour changer de propriétaire. |
| 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 à valeur de table | Les fonctions retournant une table ne peuvent pas être référencées dans des procédures stockées compilées nativement. 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 | 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 | 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 | Appliquer |
S’applique à : SQL Server 2014 (12.x) et SQL Server (à partir de SQL Server 2016 (13.x)) Cet opérateur n'est pas pris en charge. Supprimez APPLY de la procédure stockée compilée en mode natif. Azure SQL Database et SQL Server (à partir de SQL Server 2017 (14.x)) prennent en charge l’opérateur APPLY dans les modules compilés 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 | 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 | 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 | 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 | J’aime | 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 dans les procédures stockées compilées en mode natif. Obtenez la valeur en utilisant le 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 de IDENTITY dans une table à mémoire optimisée. |
| Définir l’option | option | SET les options 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 atomiques dans 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. |
| Option | RECOMPILER | Les procédures stockées compilées en mode natif sont compilées au moment de la création. Supprimez RECOMPILE de la définition de procédure. Vous pouvez exécuter sp_recompile sur une procédure stockée compilée en mode natif, ce qui entraîne sa recompilation lors de la prochaine exécution. |
| Option | ENCRYPTION | Cette option n'est pas prise en charge. Supprimez ENCRYPTION de la définition de procédure. |
| Option | POUR LA RÉPLICATION | 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 | 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 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 obtenir les indicateurs de requête pris en charge, consultez Indicateurs de requête (Transact-SQL). |
| Option | 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. |
| Option | AVEC LIENS |
S’applique à : SQL Server 2014 (12.x) et SQL Server 2016 (13.x) 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. Azure SQL Database et SQL Server (à partir de SQL Server 2017 (14.x)) prennent en charge TOP WITH TIES. |
| Fonction d'agrégation | Fonction d’agrégation | Certaines fonctions d’agrégation ne sont pas prises en charge. Pour plus d’informations sur les fonctions d’agrégation prises en charge dans les modules T-SQL compilés en mode natif, consultez Fonctionnalités prises en charge pour les modules T-SQL compilés 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. Pour plus d’informations sur les fonctions d’agrégation prises en charge dans les modules T-SQL compilés en mode natif, consultez Fonctionnalités prises en charge pour les modules T-SQL compilés en mode natif. |
| Déclaration | Déclaration | Cet énoncé n'est pas pris en charge. Pour plus d’informations sur les fonctions d’agrégation prises en charge dans les modules T-SQL compilés en mode natif, consultez Fonctionnalités prises en charge pour les modules T-SQL compilés en mode natif. |
| Fonctionnalité | MIN et MAX utilisés avec des chaînes binaires et des chaînes 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é | REGROUPER PAR TOUS | 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 () (regroupement par) | 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é | Agrégation | ROLLUP ne peut pas être utilisé avec les clauses GROUP BY dans des procédures stockées compilées en mode natif. Supprimez 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. Supprimez CUBE de la définition de procédure. |
| Fonctionnalité | ENSEMBLES DE REGROUPEMENTS | GROUPING SETS ne peut pas être utilisé avec les clauses GROUP BY dans des procédures stockées compilées en mode natif. Supprimez GROUPING SETS de la définition de procédure. |
| Fonctionnalité | DÉMARRER UNE TRANSACTION, VALIDER UNE TRANSACTION et ANNULER UNE 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 type table en ligne. | 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é | 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 la ou les tables basées sur disque vers des tables optimisées en mémoire. |
| Fonctionnalité | 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 renvoyant une table |
S’applique à : Azure SQL Database et SQL Server (à partir de SQL Server 2016 (13.x)) Les fonctions table à instructions multiples ne sont pas accessibles à partir des modules T-SQL compilés en mode natif. Les fonctions table inline sont prises en charge, mais elles doivent être créées avec WITH NATIVE_COMPILATION. S’applique à : SQL Server 2014 (12.x) Les fonctions retournant une table ne peuvent pas être référencées dans des modules T-SQL compilés nativement. |
| Option | IMPRIMER | Supprimer la référence |
| Fonctionnalité | DDL | Aucune instruction DDL n’est prise en charge dans les modules T-SQL compilés en mode natif. |
| Option | STATISTICS XML | Non pris en charge. Lorsque vous exécutez une requête, avec STATISTICS XML activé, le contenu XML est retourné sans la partie de la procédure stockée compilée en mode natif. |
Transactions qui accèdent aux tables optimisées en mémoire
Le tableau suivant répertorie les fonctionnalités et les mots clés Transact-SQL qui peuvent s’afficher dans le texte d’un message d’erreur qui implique des transactions qui accèdent aux tables mémoire optimisées, ainsi que l’action corrective à entreprendre pour résoudre l’erreur.
| Type | Nom | Résolution |
|---|---|---|
| Fonctionnalité | point de sauvegarde | La création de points de sauvegarde explicites dans les transactions qui accèdent à des tables à mémoire optimisée n'est pas prise en charge. |
| Fonctionnalité | transaction liée | Les sessions liées ne peuvent pas participer à des transactions qui accèdent à des tables optimisées en mémoire. 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. |