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

Откуда: London
Сообщений: 22649
На самом деле это два вопроса:

1. Могут ли в распределенной транзакции участвовать сервера, которые работают под Local System accounts?
Т.е. мне кажется не могут, да и практика это вроде подтверждает - но что-то в документации не нашел ничего.

2. Можно ли начать распределенную транзакцию между сервером и linked сервером, который реально ссылается на тот же сервер?
Опять же - у меня не получилось - сообщение об ошибке:

The operation could not be performed because the OLE DB provider 'SQLOLEDB' was unable to begin a distributed transaction. [OLE/DB provider returned message: New transaction cannot enlist in the specified transaction coordinator. ]

Но опять же в документации ничего не нашел, но может это я криво чего делаю? Или ищу ...
21 авг 02, 20:04    [48402]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос о distributed transactions  [new]
akuz
Member [скрыт] [заблокирован]

Откуда:
Сообщений: 6749
Можно ли начать распределенную транзакцию между сервером и linked сервером, который реально ссылается на тот же сервер?
У меня та-же фигня, похоже что нельзя, хотя если не писать DISTRIBUTED он прочухивает эти варианты.
С распределёнными транзакциями в сикуле пока что один геморой. Чтобы заставить их работать надо быть шаманом :)
22 авг 02, 09:26    [48451]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос о distributed transactions  [new]
Glory
Member

Откуда:
Сообщений: 104760
1. Т.е. мне кажется не могут, да и практика это вроде подтверждает

А по конкретнее - что именно за практика ?


2. IMHO такую транзакцию сервер будет обрабатывать как локальную транзакцию.
22 авг 02, 10:46    [48478]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос о distributed transactions  [new]
Alexander_Chepack
Member

Откуда: London
Сообщений: 22649
Практика - ну тупо - взял и попробовал - не заработало. Теперь пытаюсь понять - руки у меня кривые или так и должно быть. В документации и в MSDN ничего не нашел.
22 авг 02, 13:10    [48575]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос о distributed transactions  [new]
akuz
Member [скрыт] [заблокирован]

Откуда:
Сообщений: 6749
Вообще-то распределённыю транзакцию запускает либо юзер либо агент. В любом случае она идёт под каким-то логином сикуля. Поэтому секурити нужно настраивать на этот логин. А то под кем сесвис запущен, по моему здесь не причём.
22 авг 02, 13:15    [48580]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос о distributed transactions  [new]
ziktuw
Member

Откуда:
Сообщений: 3552
Не забыли запустить MSDTC ?
22 авг 02, 14:00    [48616]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос о distributed transactions  [new]
Alexander_Chepack
Member

Откуда: London
Сообщений: 22649
MSDTS запустить не забыл
Если SQL запущен под Local System account то распределенная транзакция на стартует - проверял несколько раз
Распределенная транзакция между сервером и тем же самым сервером тоже не работает - опять же проверял.

Непонятно, почему я об этом в документации ничего найти не смог.
22 авг 02, 15:42    [48671]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос о distributed transactions  [new]
akuz
Member [скрыт] [заблокирован]

Откуда:
Сообщений: 6749
А если не под локал систем?
22 авг 02, 15:55    [48683]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос о distributed transactions  [new]
Вася
Member

Откуда: местный
Сообщений: 543
А если не под локал систем?
28 май 03, 09:13    [212253]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос о distributed transactions  [new]
pg
Member

Откуда: Москва
Сообщений: 99
DTC имеет возможность настройки. В оснастке Службы компонентов->Компьютеры->Мой компьютер->Свойства->MSDTC.
В том числе настройки и через TIP. Но именно так не работал -)).
А так стоят - один в кластере, другой обычный. Чирикают....
28 май 03, 10:38    [212379]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос о distributed transactions  [new]
bigman
Member

Откуда:
Сообщений: 256
необходимо увеличить таймаут в MSDTC
В оснастке Службы компонентов->Компьютеры->Мой компьютер->Свойства->MSDTC
У меня - больше не такого сообщения
2 июн 03, 14:19    [218325]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Вопрос о distributed transactions  [new]
jnw
Guest
Причем здесь timeout MSDTS? Все равно ни хрена не работает!
Уточняю проблему.
SERVER2:
create table test
(
id int not null
)
go

CREATE TRIGGER trg_uid_change_remote ON [test]
FOR INSERT
AS
declare @i int
select @i = count(*) from SERVER1.database.dbo.test
go

Linked server'а взаимно прописаны.
Оба MSDTS запущены, и сервера, и MSDTS работают под аккаунтам с правами доменного админа (чтобы гарантированно исключить всяческие проблемы с security). Сервера - Win2000 Advanced Server + MS SQL 2000 Enterprise SP3.

На SERVER1 запускаем:

SET XACT_ABORT ON

begin distributed tran
--begin tran -- один фиг, все равно не работает
insert into SERVER2.database.dbo.test values( 1 )
commit tran

Результат:
The operation could not be performed because the OLE DB provider 'SQLOLEDB' was unable to begin a distributed transaction.
OLE DB error trace [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a].
[OLE/DB provider returned message: New transaction cannot enlist in the specified transaction coordinator. ]

Если выполнить просто
insert into SERVER2.database.dbo.test values( 1 )
то все работает! Непонятно только, в чем половая разница. В обоих случаях совершенно одинаково создаются локальные транзакции и цепляются к MSDTS на соответствующих серверах.
Сдается мне, джентельмены, что это глюк-с :)
22 июл 04, 14:58    [827703]     Ответить | Цитировать Сообщить модератору
 Сам себе отвечаю  [new]
jnw
Guest
Вот здесь: Microsoft Knowledge Base Article - 306212 всколзь упоминается, что c loopback-ссылками работать ничего не будет. Похоже, так оно и есть. Однако все равно не понятно, почему все работает без явного указания транзакции :(
22 июл 04, 16:05    [828097]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос о distributed transactions  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
транзакция все равно происходит.
22 июл 04, 16:22    [828215]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос о distributed transactions  [new]
Сергей Тихонов
Member

Откуда: Киев
Сообщений: 787
akuz
Вообще-то распределённыю транзакцию запускает либо юзер либо агент. В любом случае она идёт под каким-то логином сикуля. Поэтому секурити нужно настраивать на этот логин. А то под кем сесвис запущен, по моему здесь не причём.
Это с чего ты так решил? Как линкованный сервер настроен (в смысле маппинг логинов на нем и тюдю), так коннект и происходит в случае юзера...
22 июл 04, 20:59    [829078]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос о distributed transactions  [new]
Сергей Тихонов
Member

Откуда: Киев
Сообщений: 787
хотел написать "и т.д.", но получилось смешнее ;-))
22 июл 04, 21:00    [829080]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос о distributed transactions  [new]
Алексей Ельцов
Member

Откуда: Redmond
Сообщений: 252
А у тебя разрешены DTC Network Transactions?
По умолчанию в Server 2003 они запрещены.
Интуиция подсказывает, что account сервера должен быть непричем, ибо SQL общается только с локальным MSDTC, а это у тебя работает.

Вот мой checlkist для утановки MSDTC в кластере. Возможно, тебе проще просто поглядеть http://support.microsoft.com/?id=839279

<...>
• MSDTC:
• Create DTC cluster resource in "Cluster Group".
• Allow networking DTC access via Add/Remove programs
OR/AND (not sure if it's OR or an AND)
- on the node that has MSDTC, run dcomcnfg
- "Component Services" -> "Computers" -> "My Computer"
- Right-click "My Computer"; click "Properties"; "MSDTC" tab ; click "Security Configuration".
- select the "Network DTC Access"; select "Network Clients"
- Ok will restart MSDTC. Failover MSDTC to test failover works.
- Cycle all SQL servers that were already up before this reconfiguration.
• Test MSDTC from another machine: (Note: if client is XPSP2, see Q839279)
SET XACT_ABORT ON
begin distributed tran
update LinkedServer.operations.dbo.parameter set paramname ='XYZ' where paramname = 'ZYX'
select @@trancount
rollback
<...>

Алексей
22 июл 04, 22:05    [829120]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос о distributed transactions  [new]
jnw
Guest
Да, это все хорошо и правильно, но у меня Win2000 Advanced Server.
23 июл 04, 13:19    [830414]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить