Sümptomid
Kui proovite lisada andmeid kohandatud tabelisse või kui käivitate protsessi, mis lisab andmed kohandatud tabelisse, kuvatakse tõrketeade, mis sarnaneb järgmisega:
Tabelile TableName SQL Server juurdepääsul ilmnes järgmine tõrketeade:
1088, "42000",[Microsoft][ODBC SQL Server Driver][SQL Server]Ei leia objekti "NAVDBName.dbo.CompanyName$ TableName", kuna seda pole olemas või teil pole õigusi.
SQL: SET
IDENTITY_INSERT "NAVDBName"." dbo"." CompanyName$ TableName" ON
Märkus. Selles näites tähistab TableName kliendi Microsoft Dynamics NAV-i tabelit. NAVDBName tähistab kliendi Microsoft Dynamics NAV-i andmebaasi nime. CompanyName tähistab Microsoft Dynamics NAV-is kliendi määratud ettevõtte nime.
See probleem võib ilmneda Microsoft Dynamics NAV-i versioonides, mis kasutavad Microsoft SQL Server andmebaasi suvandit.
Põhjus
Probleem ilmneb siis, kui täidetud on järgmised tingimused.
-
Ühes tõrketeates näidatud tabeli väljadel on atribuudi AutoIncrement väärtuseks seatud Jah.
-
Lisamistoiming, mida kasutate, asustab selgesõnaliselt välja, mille atribuudi AutoIncrement väärtuseks on seatud Jah.
-
Teil pole ühte järgmistest õigustest.
-
SYSADMIN-serveri rolli liikmelisus SQL Server
-
Microsoft Dynamics db_owner andmebaasi rolli liikmelisus
-
Microsoft Dynamics db_ddladmin andmebaasi rolli liikmelisus
-
Lahendus
Selle probleemi lahendamiseks kasutage ühte järgmistest meetoditest.
1. meetod
Saate toimingut INSERT muuta nii, et see ei asustaks välja, mille atribuudi AutoIncrement väärtuseks on seatud Jah.
2. meetod
Määrake vastava välja atribuudi AutoIncrement väärtuseks Ei.
Märkus. Nii 1. kui ka 2. meetod võivad nõuda Microsoft Dynamics NAV arendaja abi, eriti juhul, kui muudatus nõuab koodi muutmist. Selliseid muudatusi tuleks enne muudatuste rakendumist reaalajas Microsoft Dynamics NAV-i andmebaasile põhjalikult testida.
3. meetod
Kohandatud tabelile õiguste muutmine vastavale rakenduse rollile (nt &ndo$shadow, kui valisite standardturbemudeli) SQL Server Management Studio.
Märkus. Microsoft Dynamics NAV-is turbesünkroonimisel kirjutatakse SQL Server Management Studio tabelitele käsitsi antud õigused üle. Seetõttu peate pärast turbesünkroonimist andma kohandatud tabelile uuesti alter-õigused.
Lisateave
Kui rakenduses Microsoft Dynamics NAV on atribuudi AutoIncrement väärtuseks seatud Jah täisarvu andmetüübi välja või andmetüübi BigInteger puhul, peaks vastav väli olema automaatselt asustatud kordumatu täisarvu väärtusega, mille süsteem genereerib. Väärtus, mida kasutatakse välja astmete järjestamiseks iga lisatud uue kirje jaoks.
Atribuudi AutoIncrement rakendamiseks määratleb Microsoft Dynamics NAV SQL Server, millega on seostatud atribuut IDENTITY. Atribuut IDENTITY SQL Server veeru automaatselt asustada, nagu eespool kirjeldatud. Kui atribuut IDENTITY on sisse lülitatud SQL Server, ei saa kasutajad selgesõnaliselt sisestada asjakohast veergu INSERT-lausesse, välja arvatud juhul, kui kasutajatel on üks järgmistest õigustest.
-
SYSADMIN-serveri rolli liikmelisus SQL Server
-
Microsoft Dynamics db_owner andmebaasi rolli liikmelisus
-
Microsoft Dynamics db_ddladmin andmebaasi rolli liikmelisus
Lisaks nende õiguste kasutamisele peavad kasutajad käivitama ka järgmise käsu, et lisamistoiming lõpule viia.
SET IDENTITY_INSERT <table_name> ONKui jaotises "Tunnused" mainitud tõrketeade kuvatakse, proovib Microsoft Dynamics NAV käivitada seda lauset SQL Server.
Atribuuti IDENTITY sisaldavad veerud kuvatakse selgesõnaliselt meetodina, mida tavaliselt ei nõuta. Atribuuti IDENTITY sisaldavad veerud täidetakse tavaliselt automaatselt SQL Server.