Partager via


Fonctionnalités Access incompatibles (AccessToSQL)

Toutes les fonctionnalités de base de données Access ne fonctionnent pas avec SQL Server. Par exemple, SQL Server et Access utilisent différents ensembles de mots clés réservés. Ces différences peuvent entraîner des problèmes lorsque vous migrez à l’aide de l’Assistant Migration SQL Server (SSMA). La section suivante décrit les problèmes de migration possibles et la façon dont vous pouvez les résoudre.

Paramètres ou fonctionnalités de base de données susceptibles d’affecter la migration

Passez en revue les paramètres ou fonctionnalités d’accès suivants qui peuvent affecter la migration vers SQL Server ou Azure SQL.

Les tables n’ont pas d’index uniques

Si vous migrez une table sans index unique vers SQL Server, vous ne pouvez pas modifier la table après la migration. Cette limitation peut entraîner des problèmes de compatibilité des applications.

Lorsque vous convertissez des objets de base de données Access, la fenêtre Sortie répertorie les tables Access qui n’ont pas d’index uniques.

Vous pouvez configurer Access pour ajouter une clé primaire sur la table SQL Server pendant la conversion. Pour plus d’informations, consultez Paramètres du projet (conversion).

Les tables ont des colonnes de réplication

Si vous migrez une table Access qui inclut des colonnes de système de réplication vers SQL Server, la fonctionnalité de réplication Jet cesse de fonctionner après la migration.

Après la migration, envisagez d’utiliser la réplication SQL Server pour gérer les copies synchronisées de vos bases de données.

Les tables avec des index uniques contiennent plusieurs valeurs NULL

Avant la version 8.13, vous ne pouvez pas transférer les tables Access qui ont des index uniques avec plusieurs valeurs Null vers SQL Server. Dans SQL Server, les index uniques interdisent plusieurs valeurs Null. La migration échoue pour ces tables.

SSMA signale ce problème dans les rapports d’évaluation. Pour créer un rapport d’évaluation, consultez Évaluer les objets de base de données Access pour la conversion.

Si ce problème existe, assurez-vous que la clé primaire n’a pas de valeurs null dupliquées. Ou supprimez la clé primaire ou les index uniques qui contiennent plusieurs valeurs Null.

Les tables contiennent des valeurs de date hors de la plage SQL Server

Le type datetime SQL Server accepte uniquement les dates comprises entre le 1er janvier 1753 et le 31 décembre 9999. Access accepte les dates comprises entre le 1er janvier 100 et le 31 décembre 9999.

SSMA signale ce problème dans les rapports d’évaluation. Pour créer un rapport d’évaluation, consultez Évaluer les objets de base de données Access pour la conversion.

Vous pouvez configurer la façon dont SSMA résout les dates hors de la plage SQL Server. Pour plus d’informations, consultez Paramètres du projet (migration).

Les longueurs d’index dépassent 900 octets

Les index SQL Server ont une limite de 900 octets pour la taille totale des colonnes de clé d’index. Si vos tables Access utilisent des index plus volumineux, SSMA affiche un avertissement.

Si vous poursuivez la migration des données, la migration peut échouer.

Les noms d’objets sont des mots clés SQL Server ou contiennent des caractères spéciaux

Access et SQL Server ont différents ensembles de mots clés réservés et de caractères spéciaux. SQL Server accepte les objets nommés à l’aide de mots clés SQL Server ou qui contiennent des caractères spéciaux si vous utilisez des identificateurs entre crochets ou entre guillemets, tels que select ou [select].p. Pour plus d’informations, consultez Identificateurs de base de données.

Note

Pour utiliser des guillemets pour délimiter les identificateurs, SET QUOTED_IDENTIFIER doit être ON.

Par exemple, CREATE TABLE [schema](c1 [FOR]) il s’agit d’une instruction valide, même si schema et FOR sont des mots clés réservés. CREATE TABLE [xxx*yyy](c1 x&y) Il s’agit également d’une instruction valide, même si le nom de la table et de la colonne contiennent les caractères * spéciaux et &.

Toutes les requêtes qui référencent ces objets doivent également utiliser les noms entre crochets ou guillemets. Par exemple, la requête SELECT * FROM schema échoue. La requête correcte est : SELECT * FROM [schema].

Lorsque vous convertissez des objets de base de données Access, le volet Sortie répertorie les tables Access qui utilisent des mots clés ou des caractères spéciaux. Vous pouvez modifier les tables dans Access, puis supprimer et ajouter à nouveau la base de données. Vous pouvez également modifier des requêtes qui référencent ces objets afin que les requêtes utilisent des crochets ou des guillemets pour délimiter les identificateurs. Si vous ne modifiez pas vos requêtes, vos applications Access peuvent retourner des erreurs ou rencontrer d’autres problèmes.

Les tailles de champ diffèrent dans les relations de clé primaire ou de clé étrangère

SQL Server ne prend pas en charge la fonctionnalité Jet de liaison de colonnes qui ont différents types de données ou tailles avec des contraintes de clé étrangère.

Lorsque vous convertissez des objets de base de données Access, la fenêtre Sortie répertorie les contraintes de clé primaire ou de clé étrangère qui ne sont pas converties en SQL Server. Vous pouvez modifier les types et tailles de données sur les colonnes Access afin qu’ils correspondent, puis supprimer et ajouter à nouveau la base de données Access. Vous pouvez également migrer des données même si ces contraintes ne sont pas créées dans SQL Server.

Les tables référencées n’ont pas de clé primaire ni d’index unique

Access accepte les relations entre les tables où la table référencée n’a pas de clé primaire ni d’index unique. Toutefois, SQL Server ne prend pas en charge ce type de relation.

Lorsque vous convertissez des objets de base de données Access, la fenêtre Sortie répertorie toutes les tables qui ont des relations, mais aucune clé primaire ni index unique. Vous pouvez modifier les tables pour ajouter des clés primaires ou des index uniques, puis supprimer et ajouter à nouveau la base de données Access. Vous pouvez également migrer des données même si la relation entre les tables est rompue.

SQL Server ne prend pas en charge les colonnes de lien hypertexte . Au lieu de cela, les colonnes sont traitées comme des colonnes de mémo Access. Par défaut, ces colonnes sont converties en colonnes nvarchar(max) dans SQL Server. Vous pouvez personnaliser le mappage. Pour plus d'informations, consultez Mapper les types de données source et cible.

Les fonctions ne peuvent pas être converties en SQL Server ou Azure SQL

Les expressions par défaut d’accès ou les règles de validation peuvent inclure des fonctions système d’accès ou des fonctions définies par l’utilisateur qui ne sont pas mappées à SQL Server ou Azure SQL. Si vous utilisez des fonctions qui ne sont pas mappées à SQL Server ou Azure SQL, vous ne pouvez pas charger les expressions ou les règles de validation par défaut dans SQL Server ou Azure SQL.