Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 триггер с записью в linked server  [new]
sandro_az
Guest
Всем привет! вопрос такой, есть основной сервер Srv1 и связаный Srv2
Настройку MSDTC сделал как описано здесь
Select и Insert для всех таблиц на Srv2 работают.
Но на основном сервере есть триггер на таблицу table1, в котором выполняется insert в таблицу на Srv2
В результате выдается:
OLE DB provider "SQLNCLI" for linked server "Srv2" returned message "Эта транзакция уже была явно или неявно зафиксирована или отменена".
Msg 7391, Level 16, State 2, Line 1
The operation could not be performed because OLE DB provider "SQLNCLI" for linked server "Srv2" was unable to begin a distributed transaction.
Не понятно почему одним способом работает, а другим не работает?
26 авг 10, 15:09    [9330886]     Ответить | Цитировать Сообщить модератору
 Re: триггер с записью в linked server  [new]
Geep
Member

Откуда: Москва
Сообщений: 975
В триггере писать на другой сервер?
Вы хорошо подумали?
26 авг 10, 15:21    [9331028]     Ответить | Цитировать Сообщить модератору
 Re: триггер с записью в linked server  [new]
Geep
Member

Откуда: Москва
Сообщений: 975
Service Broker, имхо.
26 авг 10, 15:23    [9331058]     Ответить | Цитировать Сообщить модератору
 Re: триггер с записью в linked server  [new]
sandro_az
Guest
Geep, да, хорошо подумал
26 авг 10, 15:37    [9331199]     Ответить | Цитировать Сообщить модератору
 Re: триггер с записью в linked server  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
автор
Настройку MSDTC сделал как описано


На каком из серверов?
26 авг 10, 15:38    [9331213]     Ответить | Цитировать Сообщить модератору
 Re: триггер с записью в linked server  [new]
sandro_az
Guest
на обоих
26 авг 10, 15:39    [9331227]     Ответить | Цитировать Сообщить модератору
 Re: триггер с записью в linked server  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
sandro_az,

Не похоже...
26 авг 10, 15:55    [9331389]     Ответить | Цитировать Сообщить модератору
 Re: триггер с записью в linked server  [new]
sandro_az
Guest
pkarklin,

однако это так...
26 авг 10, 16:01    [9331456]     Ответить | Цитировать Сообщить модератору
 Re: триггер с записью в linked server  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Что в триггере?
26 авг 10, 16:09    [9331550]     Ответить | Цитировать Сообщить модератору
 Re: триггер с записью в linked server  [new]
Geep
Member

Откуда: Москва
Сообщений: 975
	declare	@sql varchar(8000);
	---------------------------------------------------
	set		@sql = '
	select	cast(null as int) as x
	into	tempdb.dbo.t_test
	where	0=1;
	';
	exec	(@sql);
	exec	(@sql) at [LINKED_SERVER];
	set	@sql = '
	create	trigger t_ins on tempdb.dbo.t_test
	for insert as
	begin
		set	nocount on;
		insert into [LINKED_SERVER].tempdb.dbo.t_test
		select	* from inserted;
	end;
	';
	exec	(@sql);
	---------------------------------------------------
	insert	into tempdb.dbo.t_test
	select	1;
	select * from [LINKED_SERVER].tempdb.dbo.t_test;
	---------------------------------------------------
	set		@sql = '
	drop table	tempdb.dbo.t_test;
	';
	exec	(@sql);
	exec	(@sql) at [LINKED_SERVER];
Толко что проверил, всё работает.
Проверяйте настройки MSDTC.
P.S. Microsoft SQL Server 2005 - 9.00.4053.00 (Intel X86) May 26 2009 14:24:20 Copyright (c) 1988-2005
Microsoft Corporation Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
26 авг 10, 16:17    [9331635]     Ответить | Цитировать Сообщить модератору
 Re: триггер с записью в linked server  [new]
Geep
Member

Откуда: Москва
Сообщений: 975
Предполагаю, что на Srv2 в таблице куда пишете,
тоже есть триггер...
26 авг 10, 16:23    [9331692]     Ответить | Цитировать Сообщить модератору
 Re: триггер с записью в linked server  [new]
sandro_az
Guest
в конечной таблице тригера нет.
есть другой слинкованый сервер Srv3, на нем все работает.
Можно ли как-нибудь утянуть с него настройки MSDTC?

НЕ В триггере запросы выполняются, а в триггере не хотят.
26 авг 10, 17:04    [9332209]     Ответить | Цитировать Сообщить модератору
 Re: триггер с записью в linked server  [new]
sandro_az
Guest
Microsoft SQL Server 2005 - 9.00.4053.00 (X64) May 26 2009 14:13:01 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2)
26 авг 10, 17:06    [9332227]     Ответить | Цитировать Сообщить модератору
 Re: триггер с записью в linked server  [new]
Geep
Member

Откуда: Москва
Сообщений: 975
sandro_az

Можно ли как-нибудь утянуть с него настройки MSDTC?

Из реестра. Что-то вроде этого:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC]
"AllowOnlySecureRpcCalls"=dword:00000000
"FallbackToUnsecureRPCIfNecessary"=dword:00000000
"TurnOffRpcSecurity"=dword:00000001
"ServiceNetworkProtocols"=dword:00000021

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security]
"NetworkDtcAccess"=dword:00000001
"NetworkDtcAccessAdmin"=dword:00000000
"NetworkDtcAccessClients"=dword:00000000
"NetworkDtcAccessTransactions"=dword:00000001
"NetworkDtcAccessInbound"=dword:00000001
"NetworkDtcAccessOutbound"=dword:00000001
"NetworkDtcAccessTip"=dword:00000001
"XaTransactions"=dword:00000001
26 авг 10, 17:18    [9332337]     Ответить | Цитировать Сообщить модератору
 Re: триггер с записью в linked server  [new]
sandro_az
Guest
настройки те же.
проблема с триггерами не решилась.
нашли другое решение, делать в несколько запросов.
27 авг 10, 14:24    [9337955]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: триггер с записью в linked server  [new]
AntiZboy
Member

Откуда:
Сообщений: 1
Тоже столкнулся с такой же проблемой. Решил путём реализации логики триггера в процедуре вставки/обновления данных по срабатыванию которой должен выполняться триггер
3 апр 12, 17:55    [12359503]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить