Преминаване към основното съдържание
Поддръжка
Влизане с Microsoft
Влезте или създайте акаунт.
Здравейте,
Изберете друг акаунт.
Имате няколко акаунта
Изберете акаунта, с който искате да влезете.

Симптоми

Когато се опитате да вмъкнете данни в таблица по избор или когато изпълните процес, който вмъква данни в таблица по избор, получавате съобщение за грешка, подобно на следното:

Възникнаха следните SQL Server грешки при достъп до таблицата TableName:



1088, "42000";[Microsoft][ODBC SQL Server драйвер][SQL Server]Не може да се намери обектът "NAVDBName.dbo.CompanyName$ TableName" тъй като не съществува или не разполагате с разрешения.



SQL: SET

IDENTITY_INSERT "NAVDBName"". dbo"." Име на фирма$ Име на таблица" ON

Забележка В този пример TableName представя таблицата microsoft Dynamics NAV на клиента. NAVDBName представлява името на базата данни на Microsoft Dynamics NAV на клиента. CompanyName представлява определеното име на фирмата на клиента в Microsoft Dynamics NAV.



Този проблем може да възникне във версии на Microsoft Dynamics NAV, които използват опцията Microsoft SQL Server база данни.

Причина

Проблемът възниква, ако са налице следните условия:

  • В едно от полетата в таблицата, което е посочено в съобщението за грешка, свойството AutoIncrement е зададено на Да.

  • Операцията INSERT, която използвате изрично попълва полето, което има свойството AutoIncrement, зададено на Да.

  • Не разполагате с едно от следните разрешения:

    • Членството в роля на сървър на SYSADMIN в SQL Server

    • Членството db_owner роля на база данни за базата данни на Microsoft Dynamics NAV

    • Членството db_ddladmin роля на база данни за базата данни на Microsoft Dynamics NAV

Решение

За да разрешите този проблем, използвайте един от следните методи:

Метод 1


Можете да промените операцията INSERT, така че да не попълва полето, което има свойството AutoIncrement, зададено на Да.

Метод 2

Задайте свойството AutoIncrement на Не за съответното поле.

Забележка Както метод 1, така и метод 2 може да изискват съдействие от разработчик на Microsoft Dynamics NAV, особено ако изменението изисква промяна на кода. Тези промени трябва да бъдат старателно тествани, преди да приложите промените към динамична база данни на Microsoft Dynamics NAV.

Метод 3

Дайте разрешения за промяна за таблицата по избор на съответната роля на приложение (например &ndo$shadow, ако сте избрали модела на стандартна защита) в SQL Server Management Studio.


Забележка Разрешенията, които се предоставят ръчно на таблици от SQL Server Management Studio, се заместват, когато изпълнявате синхронизиране на защитата в Microsoft Dynamics NAV. Следователно трябва да дадете разрешения за промяна на таблицата по избор отново, след като изпълните синхронизирането на защитата.

Повече информация

В Microsoft Dynamics NAV, ако свойството AutoIncrement е зададено на Да за поле от тип данни Integer или за поле от тип данни BigInteger, съответното поле трябва автоматично да се попълва с уникална целочислена стойност, генерирана от системата. Стойността, която се използва за попълване на стъпките на полето последователно за всеки нов запис, който се вмъква.

За да реализира свойството AutoIncrement, Microsoft Dynamics NAV дефинира колона SQL Server, която има свойството IDENTITY, свързано с него. Свойството IDENTITY SQL Server автоматично попълване на колоната, както е описано по-горе. Ако свойството IDENTITY е включено за колона SQL Server, потребителите не могат изрично да попълват съответната колона в команда INSERT, освен ако потребителите нямат едно от следните разрешения:

  • Членството в роля на сървър на SYSADMIN в SQL Server

  • Членството db_owner роля на база данни за базата данни на Microsoft Dynamics NAV

  • Членството db_ddladmin роля на база данни за базата данни на Microsoft Dynamics NAV

Освен че имат тези разрешения, потребителите трябва също да изпълняват следната команда, за да завърши операцията INSERT.

SET IDENTITY_INSERT <table_name> ONКогато възникне съобщението за грешка, споменато в раздела "Симптоми", Microsoft Dynamics NAV се опитва да изпълни тази команда SET в SQL Server.

Методът за изрично попълване на колона, която има свойството IDENTITY, е метод, който обикновено не се изисква. Колоните, които имат свойството IDENTITY, обикновено се попълват автоматично SQL Server.

Нуждаете ли се от още помощ?

Искате ли още опции?

Разгледайте ползите от абонамента, прегледайте курсовете за обучение, научете как да защитите устройството си и още.

Общностите ви помагат да задавате и отговаряте на въпроси, да давате обратна връзка и да получавате информация от експерти с богати знания.

Беше ли полезна тази информация?

Доколко сте доволни от качеството на езика?
Какво е повлияло на вашия потребителски опит?
Като натиснете „Подаване“, вашата обратна връзка ще се използва за подобряване на продуктите и услугите на Microsoft. Вашият ИТ администратор ще може да събира тези данни. Декларация за поверителност.

Благодарим ви за обратната връзка!

×