При 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 = 'Вода горячая на отопление')
SQL SERVER- ошибка при UPDATE
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 254
- Зарегистрирован: 08 июн 2007, 08:26
- Откуда: Красноярск
- Контактная информация:
решалась ли проблема у автора?
У нас такая же проблема при update, точно такая же ошибка! Проверил тригера и хранимые процедуры chkmssql 5.3.21 - грит что все корректно, ошибка не ушла!
ЧТо делать?
Причем в тестовой бд созданной при помощи msinst 5.3.22 запрос отрабатывается! Сами тригера сравнил в тестовой и в моей бд - идентичны!
Попутно вопрос, что за табла #xx$locks, в базе явно ее нет!?
У нас такая же проблема при update, точно такая же ошибка! Проверил тригера и хранимые процедуры chkmssql 5.3.21 - грит что все корректно, ошибка не ушла!
ЧТо делать?
Причем в тестовой бд созданной при помощи msinst 5.3.22 запрос отрабатывается! Сами тригера сравнил в тестовой и в моей бд - идентичны!
Попутно вопрос, что за табла #xx$locks, в базе явно ее нет!?
-
- Местный житель
- Сообщения: 254
- Зарегистрирован: 08 июн 2007, 08:26
- Откуда: Красноярск
- Контактная информация:
Решение 1: Закоментировать в тригере строкикоторые косячат, выполнить что надо, вернуть тригер в прежнее полжение.
Решение 2: убить тригер , выполнить запрос, вернуть тригер обратно
Решение 3(высказанное ТП): ПРи каждом соединении с БД средствами сторонними от галактических(query analyzer к примеру) создавать таблицу #xx$locks, например вот так:
При потери соединения, табла магически теряется, или она какая-то временная походу!
Сразу могу сказать, что проверка базы chkmssql ни чего не дает, так как так и должно быть!
Видимо табла #xx$locks создается при соединении галактических сырцов с БД !
Решение 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 создается при соединении галактических сырцов с БД !