Simptomi
Mēģinot ievietot datus pielāgotā tabulā vai izpildot procesu, kas ievieto datus pielāgotā tabulā, tiek parādīts šāds kļūdas ziņojums:
Piekļūstot tabulai TableName, radās šāda SQL Server
kļūda(s): 1088, "42000",[Microsoft][ODBC SQL Server draiveris][SQL Server]Nevar atrast objektu "NAVDBName.dbo.CompanyName$ TableName", jo tas nepastāv vai jums nav atļauju.
valoda SQL: SET
IDENTITY_INSERT "NAVDBName"." dbo"." CompanyName$ TableName" ON
Piezīme. Šajā piemērā TableName apzīmē klienta Microsoft Dynamics NAV tabulu. NAVDBName norāda klienta Microsoft Dynamics NAV datu bāzes nosaukumu. CompanyName norāda Microsoft Dynamics NAV klienta norādīto uzņēmuma nosaukumu.
Šī problēma var rasties Microsoft Dynamics NAV versijās, kas izmanto datu Microsoft SQL Server opciju.
Cēlonis
Šī problēma rodas, ja pastāv tālāk norādītie nosacījumi.
-
Kādā no tabulas laukiem, kas norādīti kļūdas ziņojumā, rekvizīts AutoIncrement ir iestatīts uz Jā.
-
Operācija INSERT, ko izmantojat, skaidri aizpilda lauku, kura rekvizīts AutoIncrement ir iestatīts kā Jā.
-
Jums nav vienas no šīm atļaujām:
-
SysADMIN servera lomas dalība SQL Server
-
Microsoft db_owner datu bāzes lomas dalība Microsoft Dynamics NAV datu bāzē
-
Microsoft db_ddladmin datu bāzes lomas dalība Microsoft Dynamics NAV datu bāzē
-
Risinājums
Lai novērstu šo problēmu, izmantojiet kādu no tālāk aprakstītajām metodēm.
1. metode
Darbība INSERT ir jāievieto tā, lai netiek aizpildīts lauks, kurā rekvizīts AutoIncrement ir iestatīts uz Jā.
2. metode
Attiecīgajā laukā iestatiet rekvizītu AutoIncrement uz Nē.
Ņemiet vērā. Gan 1. metode, gan 2. metode var prasīt Microsoft Dynamics NAV izstrādātāja palīdzību, īpaši, ja lai to darītu, ir jāmaina kods. Šādas izmaiņas ir rūpīgi jātestē, pirms šīs izmaiņas lietojat live Microsoft Dynamics NAV datu bāzei.
3. metode
Pielāgotajai tabulai piešķirt alter atļaujas atbilstošai lietojumprogrammas lomai (piemēram, &ndo$shadow, ja atlasījāt standarta drošības modeli) SQL Server Management Studio.
Piezīme. Atļaujas, kas tiek manuāli piešķirtas tabulām SQL Server Management Studio tiek pārrakstītas, kad palaižat drošības sinhronizāciju programmā Microsoft Dynamics NAV. Tāpēc pēc drošības sinhronizācijas palaišanas pielāgotajai tabulai ir vēlreiz jāpiešķir atļaujas Mainīt.
Papildinformācija
Programmā Microsoft Dynamics NAV, ja rekvizīts AutoIncrement ir iestatīts uz Jā vesela skaitļa datu tipa laukam vai datu tipa laukam BigIntziņu, atbilstošais lauks ir automātiski jāaizpilda ar unikālu vesela skaitļa vērtību, ko ģenerē sistēma. Vērtība, kas tiek izmantota, lai lauku pakāpeniski pakāpeniski palielinātu katram ievietotā jaunā ieraksta ierakstam.
Lai ieviestu rekvizītu AutoIncrement, Microsoft Dynamics NAV SQL Server kolonnu, ar kuru ir saistīts rekvizīts IDENTITY. Rekvizīts IDENTITY SQL Server automātiski aizpildīt kolonnu, kā aprakstīts iepriekš. Ja kolonnā IDENTITY ir ieslēgts SQL Server rekvizīts IDENTITY, lietotāji nevar tieši aizpildīt attiecīgo kolonnu priekšrakstā INSERT, ja vien lietotājiem nav kāda no šīm atļaujām:
-
SysADMIN servera lomas dalība SQL Server
-
Microsoft db_owner datu bāzes lomas dalība Microsoft Dynamics NAV datu bāzē
-
Microsoft db_ddladmin datu bāzes lomas dalība Microsoft Dynamics NAV datu bāzē
Lietotājiem papildus šīm atļaujām ir arī jāpalaiž tālāk norādītās komandas, lai varētu pabeigt darbību INSERT.
SET IDENTITY_INSERT <table_name> ONKad tiek parādīts sadaļā "Pazīmes" pieminētais kļūdas ziņojums, Microsoft Dynamics NAV mēģina izpildīt šo priekšrakstu SET SQL Server.
Metode, lai tieši aizpildītu kolonnu, kam ir rekvizīts IDENTITY, ir metode, kas parasti nav nepieciešama. Kolonnas, kurām ir rekvizīts IDENTITY, parasti automātiski tiek aizpildītas, SQL Server.