Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ошибка при исполнении хранимки  [new]
Sp999
Member

Откуда: Пермь
Сообщений: 1667
Доброго времени суток всем!

Сидим на MS SQL Server 2000, нужно перейти на 2005.
Хранимка, которая на 2000 работала, на 2005 выдает ошибку:
"Cannot promote the transaction to a distributed transaction because there is an active save point in this transaction".
Ну понятно, там использовался вызов хранимки с "чужого" сервера, наверное из-за этого.
Решили переделать механизм вместо вызова этой хранимки делаем селект из таблицы, расположенной на "нашем" сервере - ошибка не исчезает. Комментируем селект - ошибки нет.
В чем грабли, подскажите, плиз?
24 сен 09, 10:46    [7701554]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при исполнении хранимки  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
автор
Ну понятно, там использовался вызов хранимки с "чужого" сервера, наверное из-за этого.


Нет, из-за этого

because there is an active save point in this transaction
24 сен 09, 10:47    [7701568]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при исполнении хранимки  [new]
Glory
Member

Откуда:
Сообщений: 104760
Там у вас сначала локальная транзакция с savepoint. А потом вы вдруг решаете эскалировать ее в распределенную
24 сен 09, 10:48    [7701575]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при исполнении хранимки  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
автор
Хранимка, которая на 2000 работала, на 2005 выдает ошибку:


Сэйвпоинты в распределенных транзакциях были запрещены и там и там.
24 сен 09, 10:49    [7701590]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при исполнении хранимки  [new]
Sp999
Member

Откуда: Пермь
Сообщений: 1667
Не понятно, почему стартует распределенная транзакция - ведь я убрал обращение к чужому серверу, обращаюсь уже к локальной таблице на своем сервере.
24 сен 09, 10:52    [7701608]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при исполнении хранимки  [new]
Glory
Member

Откуда:
Сообщений: 104760
Sp999
Не понятно, почему стартует распределенная транзакция - ведь я убрал обращение к чужому серверу, обращаюсь уже к локальной таблице на своем сервере.

Чудес, как известно, не бывает. И сами по себе транзакции не эскалируются
24 сен 09, 10:53    [7701616]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при исполнении хранимки  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Sp999
Не понятно, почему стартует распределенная транзакция - ведь я убрал обращение к чужому серверу, обращаюсь уже к локальной таблице на своем сервере.


Нам еще более непонятно, ибо мы не видим ее. Да и "обращение" м.б. разное. Вдруг, там триггер где-нибудь есть и он использует объекты на удаленном сервере.
24 сен 09, 10:54    [7701619]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при исполнении хранимки  [new]
Sp999
Member

Откуда: Пермь
Сообщений: 1667
Таблица свежесозданная и заполненная данными с чужого сервера.
Никаких триггеров на ней нет.
24 сен 09, 10:57    [7701641]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при исполнении хранимки  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Sp999
Таблица свежесозданная и заполненная данными с чужого сервера.
Никаких триггеров на ней нет.


Делаем так.

1. Вы запускаете профайлер.
2. Включаете в нем событие SP:StmtStarted
3. Запускаете хранимку.
4. Смотрите, что реально происходит.
5. Если ничего "подозрительного" не находите, цепляете трассу в текстовом виде к посту.
24 сен 09, 10:59    [7701654]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при исполнении хранимки  [new]
Glory
Member

Откуда:
Сообщений: 104760
Sp999
Таблица свежесозданная и заполненная данными с чужого сервера.
Никаких триггеров на ней нет.

Не пытайтесь убедить нас в том, что сервер делает что-то, чего не должен делать. Причем по собственной инициативе
Это ваш программный код и значит проблема в нем, а не в сервере
У вас есть транзакции ? Есть savepoint ?
24 сен 09, 11:00    [7701662]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при исполнении хранимки  [new]
Sp999
Member

Откуда: Пермь
Сообщений: 1667
Все - разобрался! Спасибо за наводку по поводу профайлера.
На самом деле в селекте наигрывались значения, по которым в ходе выполнения вызывалась еще одна хранимка, а в ней был вызов удаленной ХП.
Комментируя селект, этим самым я блокировал вызов этой хранимки, и ошибка исчезала. Вот и грешил на селект.
Система не простая, и понять это сходу я не мог.
24 сен 09, 11:21    [7701839]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить