Simptomi
Kada pokušate da umetnete podatke u prilagođenu tabelu ili kada pokrenete proces koji umeće podatke u prilagođenu tabelu, dobićete poruku o grešci koja je sledeća:
Prilikom pristupa tabeli TableName došlo je SQL Server do sledećih grešaka:
1088, "42000",[Microsoft][ODBC SQL Server Driver][SQL Server]Nije moguće pronaći objekat "NAVDBName.dbo.CompanyName$ TableName" zato što ono ne postoji ili nemate dozvole.
SQL:
POSTAVITE IDENTITY_INSERT "NAVDBName"." dbo". CompanyName$ TableName" ON
Na primer, TableName u ovom primeru predstavlja Microsoft Dynamics NAV tabelu klijenta. NAVDBName predstavlja ime Microsoft Dynamics NAV baze podataka klijenta. CompanyName predstavlja ime naznačenog preduzeća klijenta u softveru Microsoft Dynamics NAV.
Do ovog problema može doći u verzijama programa Microsoft Dynamics NAV koje koriste opciju Microsoft SQL Server baze podataka.
Uzrok
Do ovog problema dolazi ako su ispunjeni sledeći uslovi:
-
U jednom od polja u tabeli koja je označena u poruci o grešci, svojstvo AutoIncrement je postavljeno na Da.
-
Operacija INSERT koju koristite izričito popunjuje polje koje ima svojstvo AutoIncrement postavljeno na "Da".
-
Nemate jednu od sledećih dozvola:
-
Članstvo u uloge SYSADMIN servera u SQL Server
-
Članstvo db_owner baze podataka za Microsoft Dynamics NAV bazu podataka
-
Članstvo db_ddladmin baze podataka za Microsoft Dynamics NAV bazu podataka
-
Rezolucija
Da biste rešili ovaj problem, koristite jedan od sledećih metoda.
1. metod
Domenite operaciju INSERT tako da ne unosi polje koje ima svojstvo AutoIncrement postavljeno na "Da".
2. metod
Postavite svojstvo AutoIncrement na "Ne" za relevantno polje.
Napomena I metod 1 i Metod 2 mogu da zahtevaju pomoć Microsoft Dynamics NAV projektanta, posebno ako izmena zahteva promenu koda. Takve promene bi trebalo da budu detaljno testirane pre nego što primenite promene na uživo Microsoft Dynamics NAV bazu podataka.
Metod 3
Dodeli dozvole Alter za prilagođenu tabelu relevantnoj ulozi aplikacije (na primer &ndo$shadow, ako ste izabrali Standardni bezbednosni model) u programu SQL Server Management Studio.
Napoome Dozvole koje se ručno dodeljuju tabelama iz usluge SQL Server Management Studio zamenjene su kada pokrenete bezbednosnu sinhronizaciju u softveru Microsoft Dynamics NAV. Stoga morate ponovo da dodelite dozvole Alter za prilagođenu tabelu kada pokrenete sinhronizaciju bezbednosti.
Više informacija
U softveru Microsoft Dynamics NAV, ako je svojstvo AutoIncrement postavljeno na Da za polje tipa podataka "Integer" ili za polje tipa podataka BigInteger, relevantno polje trebalo bi da se automatski popunjava jedinstvenom vrednošću za broj koji generiše sistem. Vrednost koja se koristi za uzastopno popunu polja se inkrećuje za svaki novi zapis koji se umeće.
Da biste primenili svojstvo AutoIncrement, Microsoft Dynamics NAV definiše SQL Server kolonu koja ima svojstvo IDENTITY povezano sa njim. Svojstvo IDENTITY uzrokuje SQL Server automatsko popunjavanje kolone na ranije opisani način. Ako je svojstvo IDENTITY uključeno za SQL Server kolonu, korisnici ne mogu izričito da popune relevantnu kolonu u izrazu INSERT, osim ako korisnici imaju jednu od sledećih dozvola:
-
Članstvo u uloge SYSADMIN servera u SQL Server
-
Članstvo db_owner baze podataka za Microsoft Dynamics NAV bazu podataka
-
Članstvo db_ddladmin baze podataka za Microsoft Dynamics NAV bazu podataka
Pored toga što imaju ove dozvole, korisnici takođe moraju da pokreću sledeću komandu da bi operacija INSERT bila dovršena.
POSTAVITE IDENTITY_INSERT <table_name> KADA se pojavi poruka o grešci pomenuta u odeljku "Simptomi", Microsoft Dynamics NAV pokušava da pokrene ovaj SET izraz u programu SQL Server.
Metod eksplicitnog unosa kolone koja ima svojstvo IDENTITY jeste metod koji obično nije neophodan. Kolone koje imaju svojstvo IDENTITY obično se automatski popunjavaju brojem SQL Server.