06.12.2005, 10:16 | #1 |
Moderator
|
Проверка уникальности ItemDimIdx в InventSum
День добрый!
Как написать запрос который бы проверил уникальность индекса ItemDimIdx(ItemId и InventDimId) в InventSum, т.е. вывел неуникальные коммнации? А то вылезает: ?Номенклатура 000045813 Невозможно выбрать запись в 'Запасы в наличии' ('InventSum') Номенклатура: 000045813. База данных SQL обнаружила ошибку. Описание ошибки SQL: [Microsoft][ODBC SQL Server Driver][SQL Server]Index 'I_174ITEMDIMIDX' on table 'INVENTSUM' (specified in the FROM clause) does not exist. Оператор SQL: SELECT A.ITEMID,A.POSTEDQTY,A.POSTEDVALUE,A.DEDUCTED,A.RECEIVED,A.RESERVPHYSICAL,A.RESERVORDERED,A.ONORDER,A.ORDERED,A.QUOTATIONISSUE,A.QUOTATIONRECEIPT,A.DEL_CONFIGID,A.INVENTDIMID,A.CLOSED,A.REGISTERED,A.PICKED,A.AVAILORDERED,A.AVAILPHYSICAL,A.PHYSICALVALUE,A.ARRIVED,A.PHYSICALINVENT,A.CLOSEDQTY,A.LASTUPDDATEPHYSICAL,A.LASTUPDDATEEXPECTED,A.POSTEDVALUESECCUR_RU,A.PHYSICALVALUESECCUR_RU,A.ITEMNAME,A.RECID FROM INVENTSUM A(INDEX(I_174ITEMDIMIDX) UPDLOCK) WHERE ((DATAAREAID=?) AND ((ITEMID=?) AND (INVENTDIMID=?))) OPTION(FAST 1) |
|
06.12.2005, 10:30 | #2 |
Участник
|
Выполни запрос в Query Analyzer'е
X++: select DataAreaId, ItemId, InventDimId from InventSum group by DataAreaId, ItemId, InventDimId having count(*) > 1
__________________
Axapta v.3.0 sp5 kr2 |
|
06.12.2005, 10:32 | #3 |
NavAx
|
Цитата:
Сообщение от DreamCreator
Index 'I_174ITEMDIMIDX' on table 'INVENTSUM' (specified in the FROM clause) does not exist
__________________
С уважением, Игорь Ласийчук. |
|
06.12.2005, 10:32 | #4 |
Модератор
|
а при чем тут уникальность-неуникальность, если
Цитата:
SQL ServerIndex 'I_174ITEMDIMIDX' on table 'INVENTSUM' (specified in the FROM clause) does not exist
Вам синхронизация нужна
__________________
-ТСЯ или -ТЬСЯ ? |
|
06.12.2005, 10:39 | #5 |
Moderator
|
Цитата:
Сообщение от AndyD
Выполни запрос в Query Analyzer'е
X++: select DataAreaId, ItemId, InventDimId from InventSum group by DataAreaId, ItemId, InventDimId having count(*) > 1 Цитата:
Сообщение от Garic
А при чём здесь уникальность индекса? Запустите переиндексацию таблицы
Цитата:
Сообщение от Vadik
?
Вам синхронизация нужна |
|
06.12.2005, 10:42 | #6 |
Участник
|
Цитата:
Сообщение от DreamCreator
Ругается на having! ( Переменная having не объявлена.)
__________________
Axapta v.3.0 sp5 kr2 |
|
06.12.2005, 10:46 | #7 |
Moderator
|
Цитата:
Сообщение от AndyD
В Query Analyzer'е?
Нет доступа к Query Analizer-у. Запущу из Аксапты. |
|
06.12.2005, 10:48 | #8 |
Участник
|
Попробуй ч/з Connection
__________________
Axapta v.3.0 sp5 kr2 |
|
06.12.2005, 10:55 | #9 |
Moderator
|
Может пригодится..
PHP код:
|
|
06.12.2005, 11:01 | #10 |
NavAx
|
У вас разошёлся SqlDictionary и БД.
Можно попробовать удалить их из таблички SQlDictionary и после етого синронизировать. Не уверен
__________________
С уважением, Игорь Ласийчук. |
|
06.12.2005, 11:16 | #11 |
Moderator
|
Исправил 11.18
Помогла проверка/синхронизация, InventSum после удаления записей в SQLDictionary синхронизировалась. Возвращаюсь к первой проблеме. Спасибо! ________________________________________ Уже поправил: После удаления всех полей для InventSum (TableId = 174), и попытке синхронизировать (другая база, другая апликуха, до удаления работало нормально) вылезло вот такое сообщение Синхронизация Невозможно выполнить команду языка определения данных в '' (''). База данных SQL обнаружила ошибку. Описание ошибки SQL: [Microsoft][ODBC SQL Server Driver][SQL Server]There is already an object named 'INVENTSUM' in the database. Оператор SQL: CREATE TABLE INVENTSUM (ITEMID VARCHAR(20) NOT NULL DEFAULT '' ,...,POSTEDVALUESECCUR_RU NUMERIC(28,12) NOT NULL DEFAULT 0 ,PHYSICALVALUESECCUR_RU NUMERIC(28,12) NOT NULL DEFAULT 0 ,ITEMNAME VARCHAR(100) NOT NULL DEFAULT '' ,DATAAREAID VARCHAR(3) NOT NULL DEFAULT 'dat' ,RECID INT NOT NULL CHECK (RECID <> 0) ) Ошибки во время синхронизации базы SQL со словарем данных системы. Операция закончилась неудачно. Синхронизация 1 таблиц закончилась неудачно Последний раз редактировалось DreamCreator; 06.12.2005 в 11:47. |
|
06.12.2005, 11:21 | #12 |
NavAx
|
Упс. Я имел в виду удалить индексы оттуда. Но они оказывается не там живут. Щас покопаю.
Так вы удалили считайте что всю табличку и оно пытается по новой создать.
__________________
С уважением, Игорь Ласийчук. |
|
06.12.2005, 11:23 | #13 |
Moderator
|
Цитата:
Сообщение от Garic
Упс. Я имел в виду удалить индексы оттуда. Но они оказывается не там живут. Щас покопаю.
Так вы удалили считайте что всю табличку и оно пытается по новой создать. Сейчас на проблемной базе поэксперементирую! |
|
06.12.2005, 11:42 | #14 |
Moderator
|
Проделал все на проблемной базе -- SqlDictionary пересоздался, проблема с InventSum осталась...
_______________________________________________________ Может пригодится, удаление всех записей по InventSum из SQLDictionary PHP код:
База тестовая, поэтому restore из бэкапа рабочей может решить проблему.. но случись такое на рабочей.. |
|
06.12.2005, 12:29 | #15 |
Модератор
|
Цитата:
Сообщение от DreamCreator
База тестовая, поэтому restore из бэкапа рабочей может решить проблему.. но случись такое на рабочей..
во избежание, так сказать..
__________________
-ТСЯ или -ТЬСЯ ? |
|
06.12.2005, 17:23 | #16 |
Moderator
|
На данный момент ситуация такая
Через Enterprise Manager попытался удалить проблемный индекс - не дает т.к. primary индекс, причем через DesignTable не видно что есть primary-key. В Аксапте соответственно primary key убрал -- все равно, удалить индекс не дает. Будем восстанавливать из бэкапа! Спасибо за поддержку! |
|