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

Откуда:
Сообщений: 635
Добрый день, уважаемые коллеги.
Столкнулся с такой проблемой:
Есть два сервера, прилинкованные друг к другу. При попытке выполнить распределенный запрос между ними появляется ошибка:

OLE DB provider "SQLNCLI10" for linked server "SERVERNAME" returned message "Эта транзакция уже была явно или неявно зафиксирована или отменена".
Msg 7391, Level 16, State 2, Line 3
The operation could not be performed because OLE DB provider "SQLNCLI10" for linked server "SERVERNAME" was unable to begin a distributed transaction.

DTC включен на обоих серверах, все настройки установлены верно. Все необходимые порты открыты, исключение для msdtc.exe стоит. В процессе настройки даже временно отключал Firewall - не помогло.

Систем и SQL-server на обоих одинаковы
Microsoft SQL Server 2008 (SP1) - 10.0.2714.0 (X64)   May 14 2009 16:08:52   Copyright (c) 1988-2008 Microsoft Corporation  Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: ) 

С локальной машины

Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)   Jul  9 2008 14:43:34   Copyright (c) 1988-2008 Microsoft Corporation  Enterprise Evaluation Edition on Windows NT 5.2 <X86> (Build 3790: Service Pack 2) 

Возникает такая же проблема. В чем может быть дело?
27 апр 10, 16:35    [8697044]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с MSDTC  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8877
Не знаю, КАК получиться на экране...
Пользуюсь этим частенько... Попробуйте проверить по шагам... особенно в плане авторизации... В одной организации пришлось напрочь убить какую-то бы ни было авторизацию и проверки в плане безопасности - только после это всё "задышало"...

Удачи!


You may receive a 7391 error message in SQL Server 2000 when you run a distributed transaction against a linked server after you install Windows Server 2003 or Windows XP Service Pack 2
1. Make sure that the Log On As account for the MSDTC service is the Network Service account. To do this, follow these steps:
a. Click Start, and then click Run.
b. In the Run dialog box, type Services.msc, and then click OK.
c. In the Services window, locate the Distributed Transaction Coordinator service under Name in the right pane.
d. Under the Log On As column, see whether the Log On As account is Network Service or Local System.
If the Log On As account is Network Service, go to step 2. If the Log On As account is Local System account, continue with these steps.
e. Click Start, and then click Run.
f. In the Run dialog box, type cmd, and then click OK.
g. At the command prompt, type Net stop msdtc to stop the MSDTC service.
h. At the command prompt, type Msdtc –uninstall to remove MSDTC.
i. At the command prompt, type regedit to open Registry Editor.
j. In Registry Editor, locate the following key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTCregistry key.
Delete this key.
k. Quit Registry Editor.
l. At the command prompt, type Msdtc –install to install MSDTC.
m. At the command prompt, type Net start msdtc to start the MSDTC service.
Note that the Log On As account for the MSDTC service is set to Network Service account.
2. Enable MSDTC to allow the network transaction. To do this, follow these steps:
. Click Start, and then click Run.
a. In the Run dialog box, type dcomcnfg.exe, and then click OK.
b. In the Component Services window, expand Component Services, expand Computers, and then expand My Computer.
c. Right-click My Computer, and then click Properties.
d. In the My Computer Properties dialog box, click Security Configuration on the MSDTC tab.
e. In the Security Configuration dialog box, click to select the Network DTC Access check box.
f. To allow the distributed transaction to run on this computer from a remote computer, click to select the Allow Inbound check box.
g. To allow the distributed transaction to run on a remote computer from this computer, click to select the Allow Outbound check box.
h. Under the Transaction Manager Communication group, click to select the No Authentication Required option. Set No Authentication Required on both the client and the remote systems.
i. In the Security Configuration dialog box, click OK.
j. In the My Computer Properties dialog box, click OK.
3. Configure Windows Firewall to include the MSDTC program and to include port 135 as an exception. To do this, follow these steps:
. Click Start, and then click Run.
a. In the Run dialog box, type Firewall.cpl, and then click OK
b. In Control Panel, double-click Windows Firewall.
c. In the Windows Firewall dialog box, click Add Program on the Exceptions tab.
d. In the Add a Program dialog box, click the Browse button, and then locate the Msdtc.exe file. By default, the file is stored in the <Installation drive>:\Windows\System32 folder.
e. In the Add a Program dialog box, click OK.
f. In the Windows Firewall dialog box, click to select the msdtc option in the Programs and Services list.
g. Click Add Port on the Exceptions tab.
h. In the Add a Port dialog box, type 135 in the Port number text box, and then click to select the TCP option.
i. In the Add a Port dialog box, type a name for the exception in the Name text box, and then click OK.
j. In the Windows Firewall dialog box, select the name that you used for the exception in step j in the Programs and Services list, and then click OK.
4. Test pinging from the host server to the remote server, and from the remote server to the host server, using the netbios name (server name, without the domain). Microsoft Distributed Transaction Coordinator uses the netbios name, not the fully qualified domain name, to locate servers. If name resolution fails, distributed transactions will fail. If pings using the netbios name fails, refer to the following knowledge base article:
172218 Microsoft TCP/IP Host Name Resolution Order - http://support.microsoft.com/kb/839279
27 апр 10, 19:09    [8698295]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с MSDTC  [new]
Дмитрий Гринь
Member

Откуда:
Сообщений: 635
SIMPLicity_, все нстроено в соответствии с этими рекомендациями
27 апр 10, 19:18    [8698352]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с MSDTC  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8877
Если все аутентикации и проверки выключены, то просто рестартуйте всю эту хрень и оно должно взлететь... Как ни странно, даже NT-сервер приходится иногда рестартовать (хотя, идеологически, это полная херь;ИМХО).
PS На обоих концах (точнее - компьютерах) настрон MSDTC?
27 апр 10, 19:22    [8698376]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с MSDTC  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8877
Это, если не трудно, - опишите СУТЬ распределённого запроса... Может в нём заковыка какая...
27 апр 10, 19:23    [8698379]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с MSDTC  [new]
Дмитрий Гринь
Member

Откуда:
Сообщений: 635
Сервер уже рестартовался.
Включен DTC везде.

Валится даже на тестовом запросе типа:

begin distributed tran Tr
select * from [server-2].TEST.dbo.test
commit tran Tr
27 апр 10, 19:27    [8698396]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с MSDTC  [new]
Glory
Member

Откуда:
Сообщений: 104751
может dtcping.exe сможет локализовать проблему
28 апр 10, 10:45    [8700374]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с MSDTC  [new]
Дмитрий Гринь
Member

Откуда:
Сообщений: 635
Glory
может dtcping.exe сможет локализовать проблему


Invoking RPC method on SERVER
Problem:fail to invoke remote RPC method
Error(0x6D9) at dtcping.cpp @303
-->RPC pinging exception
-->1753(There are no more endpoints available from the endpoint mapper.)
RPC test failed
28 апр 10, 11:44    [8701023]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с MSDTC  [new]
Glory
Member

Откуда:
Сообщений: 104751
В HowtoAnalyze_Dtcping_Output.txt есть что то по этому поводу ?
28 апр 10, 11:45    [8701036]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с MSDTC  [new]
Дмитрий Гринь
Member

Откуда:
Сообщений: 635
Glory,

К сожалению нету.
28 апр 10, 11:48    [8701060]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с MSDTC  [new]
Glory
Member

Откуда:
Сообщений: 104751
Попробуйте поиск по сообщению There are no more endpoints available from the endpoint mapper на сайте MS
28 апр 10, 11:53    [8701113]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с MSDTC  [new]
Glory
Member

Откуда:
Сообщений: 104751
вот например http://support.microsoft.com/kb/306843/en-us
28 апр 10, 11:54    [8701132]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с MSDTC  [new]
Дмитрий Гринь
Member

Откуда:
Сообщений: 635
Glory,

Спасибо, буду искать
28 апр 10, 12:03    [8701219]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с MSDTC  [new]
AnShev0
Member

Откуда:
Сообщений: 2
Дмитрий Гринь,

Такая же беда была тоже. На SQL 2008 оба сервака.
Что делали:
1) Отключили на портах SQL FireWall, включая порт для MS DTC (вроде 135)
2) Проделывали всё, что сказано в большой рекомендации от SIMPLicity_ . Всякие настройки из шага 2. Enable MSDTC to allow the network transaction. и т.д.....
3) Но пока НЕ ПЕРЕЗАГРУЗИЛИ оба сервака, работать не начало. (В Интернете так и пишут люди, а перегрузите обязательно).

Колупались с этой бедой целый день, и так пробовали и сяк, а так как сервер рабочий 24/7, то перегружать не было возможности, пока все способы не исчерпали. Пробовали утилиты DTCPing (работала) и DTCTest(не работала).

Но было проще так как работало до этого и мы знали какие запросы перестали работать.
Например, вставка результатов хранимой процедуры с другого сервака в таблицу на этом.
И такой же пример как у Вас.
--------
И, пожалуйста, кто решает описанные проблемы пишите как удалось вылечить. Нам только так.
13 май 10, 14:13    [8767783]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с MSDTC  [new]
AnShev0
Member

Откуда:
Сообщений: 2
Дмитрий Гринь,

А ещё Service Pack и на 2-ую машину поставили. На Вашей конфигурации я смотрю 1 сервак с SP1, а второй нет.
13 май 10, 14:18    [8767840]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с MSDTC  [new]
r.t.f.m.
Member

Откуда:
Сообщений: 118
Иногда, если обе машины в домене помогает вывод и ввод в домен одной из машин.
7 окт 10, 16:14    [9569966]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Проблема с MSDTC  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8877
Право смешно: каждый новый раз - как первый. Помогло отключение проверки на обоих машинах (в настройках безопасности DTC). Это какой-то бред. Сижу - фрустрирую над двумя дырищами в безопасности :( А иначе dtcping не мог установить двустороннее соединение. Оба скульных сервака - 2008, Standard Edition (64-bit) ....
20 июн 16, 05:52    [19312631]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить