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

Откуда:
Сообщений: 4
День добрый! Возникла неприятная для меня ситуаций. Т.к. опыт ограничен самостоятельно решения не нашел.
Было 2 сервер MSSQL2005 1 -x64 Enterprise SP4 , 2- x32 Enterprise SP2. На табличке висело три триггера - обновление, удаление, вставка. Все работало и успешно реплицировало часть данных с сервера1 на сервер2.
В силу разных обстоятельств второй сервер пришлось заменить на 2005 х64 SP4 Standard. В данный момент имею следующее:
триггеры на вставку и изменение работают нормально. Триггер на удаление жалуется, что не может найти 'Server2' в sys.servers. Если делаю select *sys.servers, то обнаруживаю полный состав необходимых серверов. Все три триггера работают через view (сделано было для облегчения смены целевой таблички). При попытке заменить в триггере на удаление view на полный путь вида сервер.база.схема.таблиа, получаю сообщение The multi-part identifier "...." could not be found. Может кто подсказать, в чем тут дело, где посмотреть, над чем подумать (ссылка на исходные тексты MS SQL не оптимальна -добыть проблематично и разглядывать можно до конца жизни)? Буду весьма признателен.
1 апр 13, 15:05    [14121866]     Ответить | Цитировать Сообщить модератору
 Re: Trigger+distributed transaction  [new]
Glory
Member

Откуда:
Сообщений: 104760
wawasq
Триггер на удаление жалуется, что не может найти 'Server2' в sys.servers.

"жалуется" не триггер а конкретная команда. Вы знаете эту команду ?
1 апр 13, 15:28    [14121988]     Ответить | Цитировать Сообщить модератору
 Re: Trigger+distributed transaction  [new]
wawasq
Member

Откуда:
Сообщений: 4
Обычная команды delet. даю из соответсвующего интерфейса Management studio/ отключаю триггер и спокойно удаляю находясь на сервер1 как с него самого, так и обращением через присоединненный сервер со второго. НЕ работает исключительно внутри триггера delete (он не мудрящий)
ALTER TRIGGER [dbo].[fiodel]
ON [dbo].[FIO_Osn_r]
AFTER DELETE
AS
BEGIN
SET NOCOUNT ON;
DELETE FROM zzz_remote_FIO_Osn_r
WHERE exists
(select * from deleted where zzz_remote_FIO_Osn_r.TabNom=deleted.tabnom)
end
из командной строки
DELETE FROM FIO_Osn_r where tabnom=xxx
и
DELETE FROM zzz_remote_FIO_Osn_r where tabnom=xxx
проходит
zzz_remote_FIO_Osn_r ссылающаяся на таблицу с сервера2
1 апр 13, 16:54    [14122655]     Ответить | Цитировать Сообщить модератору
 Re: Trigger+distributed transaction  [new]
Glory
Member

Откуда:
Сообщений: 104760
wawasq
из командной строки
DELETE FROM FIO_Osn_r where tabnom=xxx
проходит

Что ж тогда не работает ?
1 апр 13, 16:57    [14122675]     Ответить | Цитировать Сообщить модератору
 Re: Trigger+distributed transaction  [new]
wawasq
Member

Откуда:
Сообщений: 4
А триггер и не работает. если он включен, то при попытке удалить данные, получаю сообщени об ошибке: мол не может найти сервер2
1 апр 13, 18:05    [14123134]     Ответить | Цитировать Сообщить модератору
 Re: Trigger+distributed transaction  [new]
Glory
Member

Откуда:
Сообщений: 104760
а запрос
DELETE FROM zzz_remote_FIO_Osn_r
WHERE exists
(select * from <sometable> where zzz_remote_FIO_Osn_r.TabNom=deleted.tabnom)
работает ?
1 апр 13, 20:13    [14123612]     Ответить | Цитировать Сообщить модератору
 Re: Trigger+distributed transaction  [new]
wawasq
Member

Откуда:
Сообщений: 4
нет. не работает
но
select l.tabnom
from test l, zzz_remote_FIO_Osn_r r
where l.tabnom=r.tabnom

работает успешно
2 апр 13, 07:18    [14124334]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить