SQL SERVER- ошибка при UPDATE

Администрирование баз данных (Pervasive.SQL, MS SQL, Oracle, утилита Support)

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Daiver
Посетитель
Сообщения: 36
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Миасс

SQL SERVER- ошибка при UPDATE

Сообщение Daiver »

При UPDATE таблицы возникает ошибка -

Server: Msg 4701, Level 11, State 1, Procedure T$SPSTEP_U, Line 15
Could not truncate table '#xx$locks' because this table does not exist in database

Запрос на незаполненной тестовой базе ошибок не дает, ошибка только на рабочей

Запрос -

UPDATE T$SPSTEP
SET T$SPSTEP.F$KOL=0, T$SPSTEP.F$KOLSKL=0
FROM T$BASEDOC RIGHT OUTER JOIN
T$STEPDOC ON T$BASEDOC.F$NREC = T$STEPDOC.F$CBASEDOC RIGHT OUTER JOIN
T$SPSTEP LEFT OUTER JOIN
T$KATMC ON T$SPSTEP.F$CMCUSL = T$KATMC.F$NREC ON T$STEPDOC.F$NREC = T$SPSTEP.F$CSTEPDOC
WHERE (CONVERT(varchar(10), dbo.IntToDatetime(T$BASEDOC.F$DDOC), 105) = '31-12-2004') AND
(T$KATMC.F$NAME = 'Горячее водоснабжение' OR T$KATMC.F$NAME = 'Вода горячая на отопление')
thor
Местный житель
Сообщения: 289
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Saint-Petersburg
Контактная информация:

Сообщение thor »

Было такое вроде, после установки Атлантиса 5.3
Лечили, если память не изменяет, chkmssql.exe на испраыление системных объектов и триггеров по всем таблицам БД
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

thor
добавлю только что нормальный чек для MSSQL только к 5.3.19 появился... старый создавал процедуры не под тем юзером и без паблик прав.
так что качните самый свежий с фтп.
PViP
Местный житель
Сообщения: 254
Зарегистрирован: 08 июн 2007, 08:26
Откуда: Красноярск
Контактная информация:

Сообщение PViP »

решалась ли проблема у автора?
У нас такая же проблема при update, точно такая же ошибка! Проверил тригера и хранимые процедуры chkmssql 5.3.21 - грит что все корректно, ошибка не ушла!

ЧТо делать?

Причем в тестовой бд созданной при помощи msinst 5.3.22 запрос отрабатывается! Сами тригера сравнил в тестовой и в моей бд - идентичны!

Попутно вопрос, что за табла #xx$locks, в базе явно ее нет!?
PViP
Местный житель
Сообщения: 254
Зарегистрирован: 08 июн 2007, 08:26
Откуда: Красноярск
Контактная информация:

Сообщение PViP »

Решение 1: Закоментировать в тригере строкикоторые косячат, выполнить что надо, вернуть тригер в прежнее полжение.

Решение 2: убить тригер , выполнить запрос, вернуть тригер обратно

Решение 3(высказанное ТП): ПРи каждом соединении с БД средствами сторонними от галактических(query analyzer к примеру) создавать таблицу #xx$locks, например вот так:

Код: Выделить всё

if not exists (select * from dbo.sysobjects where id = object_id(N'[xx$locks]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

create table #xx$locks (TableNRec binary(8))

При потери соединения, табла магически теряется, или она какая-то временная походу!

Сразу могу сказать, что проверка базы chkmssql ни чего не дает, так как так и должно быть!

Видимо табла #xx$locks создается при соединении галактических сырцов с БД !
Ответить