Message d’erreur lorsque vous essayez d’insérer des données dans une table personnalisée dans Microsoft Dynamics NAV : « Impossible de trouver l’objet « NAVDBName.dbo.CompanyName$ TableName », car il n’existe pas ou vous ne disposez pas des autorisations »


Symptômes


Lorsque vous essayez d’insérer des données dans une table, ou lorsque vous exécutez un processus qui insère des données dans une table, vous recevez un message d’erreur semblable au suivant :

Les erreurs SQL Server suivantes s’est produite lors de l’accès à la table nom_table :



1088, « .dbo 42000 «, [Microsoft] [pilote ODBC SQL Server] [SQL Server] ne peut pas trouver l’objet »NAVDBName. CompanyName$ TableName«, car il n’existe pas ou vous ne disposez pas d’autorisations.



SQL :

« SET IDENTITY_INSERT » «NAVDBName». » dbo ». » CompanyName$ TableName« sur
Remarque Dans cet exemple, TableName représente la table de Microsoft Dynamics NAV du client. NAVDBName représente le nom de base de données du client Microsoft Dynamics NAV. CompanyName représente le nom de l’entreprise du client dans Microsoft Dynamics NAV.



Ce problème peut se produire dans les versions de Microsoft Dynamics NAV qui utilisent l’option de base de données Microsoft SQL Server.

Cause


Ce problème se produit si les conditions suivantes sont remplies :
  • Dans un des champs de la table indiquée dans le message d’erreur, la propriété AutoIncrement a la valeur Oui.

  • L’opération d’insertion que vous utilisez explicitement remplit le champ dont la propriété AutoIncrement a la valeur Oui.

  • Vous n’avez pas une des autorisations suivantes :
    • L’appartenance du rôle de serveur SYSADMIN dans SQL Server
    • L’appartenance du rôle de base de données db_owner pour la base de données Microsoft Dynamics NAV
    • L’appartenance du rôle de base de données db_ddladmin de la base de données Microsoft Dynamics NAV

Résolution


Pour résoudre ce problème, appliquez l'une des méthodes suivantes.

Méthode 1

Modifier l’opération d’insertion afin qu’il ne remplit pas le champ dont la propriété AutoIncrement a la valeur Oui.

Méthode 2

Attribuez la propriété AutoIncrement pour le champ approprié.

Remarque Les méthodes 1 et 2 de la méthode nécessiter l’intervention d’un développeur de Microsoft Dynamics NAV, en particulier si la modification nécessite un changement de code. Ces modifications doivent être testées avant d’appliquer les modifications apportées à une base de données Microsoft Dynamics NAV live.

Méthode 3

Accorder des autorisations de modification de la table personnalisée pour le rôle d’application pertinents (par exemple, & nnuler$ clichés instantanés, si vous avez sélectionné le modèle de sécurité Standard) dans SQL Server Management Studio.


Remarque Autorisations accordées manuellement aux tables à partir de SQL Server Management Studio sont remplacées lorsque vous exécuterez une synchronisation de sécurité dans Microsoft Dynamics NAV. Par conséquent, vous devez accorder des autorisations Alter au tableau personnalisé à nouveau après l’exécution de la synchronisation de la sécurité.

Plus d'informations


Dans Microsoft Dynamics NAV, si la propriété AutoIncrement a la valeur Oui pour un champ de type de données entier ou pour un champ de type BigInteger, le champ approprié doit être automatiquement rempli par une valeur entière unique qui est générée par le système. La valeur qui est utilisée pour remplir le champ s’incrémente consécutivement pour chaque nouvel enregistrement est inséré.

Pour implémenter la propriété AutoIncrement , Microsoft Dynamics NAV définit une colonne SQL Server qui possède la propriété IDENTITY associée. La propriété IDENTITY entraîne de SQL Server remplir automatiquement la colonne comme décrit précédemment. Si la propriété d’identité est activée pour une colonne SQL Server, les utilisateurs ne peuvent pas remplir explicitement la colonne appropriée dans une instruction INSERT , sauf si les utilisateurs disposent d’une des autorisations suivantes :
  • L’appartenance du rôle de serveur SYSADMIN dans SQL Server
  • L’appartenance du rôle de base de données db_owner pour la base de données Microsoft Dynamics NAV
  • L’appartenance du rôle de base de données db_ddladmin de la base de données Microsoft Dynamics NAV
Outre ces autorisations, les utilisateurs doivent également exécuter la commande suivante pour effectuer l’opération d’insertion.
SET IDENTITY_INSERT <table_name> ON
Lorsque le message d’erreur qui est mentionné dans la section « Symptômes » se produit, Microsoft Dynamics NAV tente d’exécuter cette instruction SET dans SQL Server.

La méthode de remplissage explicitement d’une colonne qui comporte la propriété IDENTITY est une méthode qui n’est pas généralement nécessaire. Les colonnes ayant la propriété d’identité sont généralement remplies automatiquement par SQL Server.