Fehlermeldung beim Einfügen von Daten in einer benutzerdefinierten Tabelle in Microsoft Dynamics NAV: "Nicht gefunden"NAVDBName.dbo.CompanyName$ TableName-Objekts nicht vorhanden oder Sie verfügen nicht über die Berechtigungen"


Problembeschreibung


Wenn Sie versuchen, Daten in einer benutzerdefinierten Tabelle einzufügen oder ein Prozess ausgeführt wird, der Daten in einer benutzerdefinierten Tabelle einfügt, erhalten Sie eine Fehlermeldung, die der folgenden ähnelt:

Folgende Fehler SQL Server beim Zugriff auf die Tabelle Tabellenname :



1088 "42000", [Microsoft] [ODBC SQL Server Driver] [SQL Server] kann das Objekt nicht finden"NAVDBName.dbo. CompanyName$ TableName"weil nicht vorhanden, oder Sie sind nicht berechtigt.



SQL:

SET IDENTITY_INSERT "NAVDBName"." Dbo"." CompanyName$ TableName"auf
Hinweis In diesem Beispiel steht TableName Debitorentabelle Microsoft Dynamics NAV. NAVDBName stellt den Namen des Kunden Microsoft Dynamics NAV-Datenbank. CompanyName stellt den festgelegten Firmennamen des Kunden in Microsoft Dynamics NAV



Dieses Problem kann in Versionen von Microsoft Dynamics NAV auftreten, die Microsoft SQL Server-Datenbankoption verwenden.

Ursache


Dieses Problem tritt auf, wenn Folgendes zutrifft:
  • In eines der Felder in der Tabelle, die in der Fehlermeldung angegeben wird, wird die AutoIncrement -Eigenschaft auf Ja festgelegt.

  • Explizit verwenden Einfügevorgang füllt das Feld mit der AutoIncrement -Eigenschaft auf Ja festgelegt.

  • Sie haben nicht eine der folgenden Berechtigungen:
    • Die SYSADMIN Server Rollenmitgliedschaft in SQL Server
    • Mitgliedschaft in der Db_owner -Datenbankrolle für Microsoft Dynamics NAV-Datenbank
    • Die Rollenmitgliedschaft des Db_ddladmin -Datenbank für Microsoft Dynamics NAV-Datenbank

Problemlösung


Um dieses Problem zu beheben, verwenden Sie eine der folgenden Methoden.

Methode 1

Ändern des Einfügevorgangs, dass nicht das Feld aufgefüllt wird, das AutoIncrement -Eigenschaft auf Ja festgelegt ist.

Methode 2

AutoIncrement -Eigenschaft für das entsprechende Feld auf Nein festgelegt.

Hinweis Methode 1 und 2 kann ein Entwickler Microsoft Dynamics NAV benötigt insbesondere erfordert die Änderung der Code geändert. Eine solche Änderung sollten gründlich getestet werden, bevor zu einer Livedatenbank Microsoft Dynamics NAV Änderungen.

Methode 3

Berechtigungen Sie ändern für benutzerdefinierte Tabelle relevanten Anwendungsrolle (zum Beispiel & Ndo$ Shadow, wählt das Standardsicherheitsmodell) in SQL Server Management Studio.


Hinweis Beim Ausführen einer Synchronisierung der Sicherheit in Microsoft Dynamics NAV manuell Tabellen aus SQL Server Management Studio erteilten Berechtigungen überschrieben Daher müssen Sie Alter der benutzerdefinierten Tabelle erneut Berechtigungen nach der Ausführung der Synchronisierung der Sicherheit.

Weitere Informationen


In Microsoft Dynamics NAV Wenn AutoIncrement -Eigenschaft auf Ja, für ein Feld des Datentyps Ganzzahl oder ein Feld BigInteger Daten festgelegt ist sollten das entsprechende Feld automatisch durch einen eindeutigen ganzzahligen Wert aufgefüllt, die vom System generiert wird. Der Wert zum Feld Inkrementen nacheinander für jeden neuen Datensatz füllen, das eingefügt wird.

Zum Implementieren der AutoIncrement -Eigenschaft definiert Microsoft Dynamics NAV eine SQL Server-Spalte mit der IDENTITY -Eigenschaft zugeordnet. Die IDENTITY -Eigenschaft wird SQL Server die Spalte automatisch aufgefüllt, wie oben beschrieben. Wenn die IDENTITY -Eigenschaft für eine Spalte SQL Server aktiviert ist, können keine Benutzer explizit die entsprechende Spalte in einer INSERT -Anweisung füllen, wenn der Benutzer eine der folgenden Berechtigungen verfügen:
  • Die SYSADMIN Server Rollenmitgliedschaft in SQL Server
  • Mitgliedschaft in der Db_owner -Datenbankrolle für Microsoft Dynamics NAV-Datenbank
  • Die Rollenmitgliedschaft des Db_ddladmin -Datenbank für Microsoft Dynamics NAV-Datenbank
Zusätzlich zu diesen Berechtigungen, müssen Benutzer auch für den Einfügevorgang abgeschlossen werden den folgenden Befehl ausführen.
SET IDENTITY_INSERT <table_name> ON
Tritt die Fehlermeldung, die im Abschnitt "Symptome" erwähnte versucht Microsoft Dynamics NAV SET -Anweisung in SQL Server ausführen.

Die Methode explizit füllen eine Spalte mit der IDENTITY -Eigenschaft ist eine Methode, die in der Regel erforderlich ist. Die Spalten mit der IDENTITY -Eigenschaft werden normalerweise automatisch von SQL Server aufgefüllt.