Messaggio di errore quando si tenta di inserire dati in una tabella personalizzata in Microsoft Dynamics NAV: "Impossibile trovare l'oggetto "NAVDBName.dbo.CompanyName$ TableName" perché non esiste o non si dispone delle autorizzazioni"

Sintomi

Quando si prova a inserire dati in una tabella personalizzata o quando si esegue un processo che inserisce dati in una tabella personalizzata, viene visualizzato un messaggio di errore analogo al seguente:

Durante l'accesso alla tabella TableName si sono verificati gli errori di SQL Server seguenti:



1088, "42000",[Microsoft][ODBC SQL Server Driver][SQL Server]Impossibile trovare l'oggetto "NAVDBName.dbo.CompanyName$ TableName" perché non esiste o non si hanno le autorizzazioni.



SQL: SET

IDENTITY_INSERT "NAVDBName". dbo"." CompanyName$ TableName" ON

Nota: In questo esempio TableName rappresenta la tabella di Microsoft Dynamics NAV del cliente. NAVDBName rappresenta il nome del database di Microsoft Dynamics NAV del cliente. CompanyName rappresenta il nome della società designata del cliente in Microsoft Dynamics NAV.



Questo problema può verificarsi nelle versioni di Microsoft Dynamics NAV che usano l'opzione Microsoft SQL Server database.

Causa

Questo problema si verifica se si verificano le condizioni seguenti:

  • In uno dei campi della tabella indicata nel messaggio di errore, la proprietà AutoIncrement è impostata su Sì.

  • L'operazione INSERT che si usa popola in modo esplicito il campo con la proprietà AutoIncrement impostata su Sì.

  • Non si dispone di una delle autorizzazioni seguenti:

    • Appartenenza al ruolo del server SYSADMIN in SQL Server

    • Appartenenza db_owner ruoli del database per il database di Microsoft Dynamics NAV

    • Appartenenza db_ddladmin ruoli del database per il database di Microsoft Dynamics NAV

Risoluzione

Per risolvere il problema, usare uno dei metodi seguenti.

Metodo 1


Modificare l'operazione INSERT in modo che non popola il campo con la proprietà AutoIncrement impostata su Sì.

Metodo 2

Impostare la proprietà AutoIncrement su No per il campo pertinente.

Nota Sia il metodo 1 che il metodo 2 possono richiedere l'assistenza di uno sviluppatore di Microsoft Dynamics NAV, soprattutto se la modifica richiede una modifica del codice. Queste modifiche devono essere testate accuratamente prima di applicare le modifiche a un database live di Microsoft Dynamics NAV.

Metodo 3

Concedere le autorizzazioni Alter per la tabella personalizzata al ruolo dell'applicazione pertinente, ad esempio &ndo$shadow, se è stato selezionato il modello di sicurezza Standard, in SQL Server Management Studio.


Nota Le autorizzazioni concesse manualmente alle tabelle SQL Server Management Studio vengono sovrascritte quando si esegue una sincronizzazione della sicurezza in Microsoft Dynamics NAV. Pertanto, dopo aver eseguito la sincronizzazione della sicurezza, è necessario concedere di nuovo le autorizzazioni Alter alla tabella personalizzata.

Ulteriori informazioni

In Microsoft Dynamics NAV, se la proprietà AutoIncrement è impostata su Sì per un campo di tipo di dati Integer o per un campo di tipo di dati BigInteger, il campo pertinente deve essere popolato automaticamente da un valore intero univoco generato dal sistema. Il valore usato per popolare il campo viene incrementato consecutivamente per ogni nuovo record inserito.

Per implementare la proprietà AutoIncrement, Microsoft Dynamics NAV definisce una colonna SQL Server a cui è associata la proprietà IDENTITY. La proprietà IDENTITY SQL Server popolare automaticamente la colonna come descritto in precedenza. Se la proprietà IDENTITY è attivata per una colonna SQL Server, gli utenti non possono popolare in modo esplicito la colonna pertinente in un'istruzione INSERT a meno che gli utenti non hanno una delle autorizzazioni seguenti:If the IDENTITY property is turned on for a SQL Server column, users cannot explicitly populate the relevant column in an INSERT statement unless the users have one of the following permissions:

  • Appartenenza al ruolo del server SYSADMIN in SQL Server

  • Appartenenza db_owner ruoli del database per il database di Microsoft Dynamics NAV

  • Appartenenza db_ddladmin ruoli del database per il database di Microsoft Dynamics NAV

Oltre ad avere queste autorizzazioni, gli utenti devono anche eseguire il comando seguente per completare l'operazione INSERT.

SET IDENTITY_INSERT <table_name> ONQuando si verifica il messaggio di errore menzionato nella sezione "Sintomi", Microsoft Dynamics NAV sta provando a eseguire questa istruzione SET in SQL Server.

Il metodo per popolare in modo esplicito una colonna con la proprietà IDENTITY è un metodo che in genere non è obbligatorio. Le colonne con la proprietà IDENTITY vengono in genere popolate automaticamente SQL Server.

Serve aiuto?

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa a Microsoft Insider

Queste informazioni sono risultate utili?

Grazie per il feedback!

×