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

Откуда:
Сообщений: 241
Доборый день.

Проблема:
после запуска транзакция впадает в ожидание MSQL_DQ и вывести ее из этого состояния можно только, если перезапустить сервер, либо с перезапустить локальный MSDTC.

Ситуация:
2 сервера, распределенная транзакция с уровнем SERIALIZABLE (уровни менял - не помогло).
стартует с сервера
Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)
берет данные с сервера
Microsoft SQL Server 2005 - 9.00.3282.00 (Intel X86)

профайлер показывает, что был старт запроса, потом транзакция запрашивает блокировки на одни и те же ресурсы и освобождает их, и так до бесконечности. те ждет.

вопрос из-за чего она впадает в это ожидание, и что нужно сделать, чтобы все завелось?
ps причем, если я убириаю begin transaction - commit transaction, то все работает.

пример тразакции:

SET NOCOUNT ON;

SET XACT_ABORT ON;

BEGIN TRY

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

BEGIN DISTRIBUTED TRANSACTION GetSalesArea2Material;

DELETE FROM md.SalesArea2Material;

INSERT INTO md.SalesArea2Material
(
materialId,
salesOrganizationId,
distributorChannelId
)
SELECT DISTINCT
m.Id,
sa.salesOrganizationId,
sa.distributorChannelId
FROM
md.vwMaterials AS vwm
INNER JOIN
md.vwSalesAreas AS sa
ON
vwm.materialSalesOrganization = sa.salesOrganization AND
vwm.materialDistributorChannel = sa.distributorChannel
INNER JOIN
md.Materials AS m
ON
m.code = vwm.materialCode;

COMMIT TRANSACTION GetSalesArea2Material;

SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

END TRY
17 ноя 09, 11:41    [7938281]     Ответить | Цитировать Сообщить модератору
 Re: Доборый день.  [new]
pkarklin
Member

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


Если запрашивает, и освобождает, то почему тогда ждет? Каково состояние процесса на обоих серверах? Не блокируется ли его выполнение другим процессом?
17 ноя 09, 11:47    [7938349]     Ответить | Цитировать Сообщить модератору
 Re: Доборый день.  [new]
dmitry stakanov
Member

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

нет блокировок никаких нет.
более того на удаленном сервере процесс уже завершет вызовом sys.sp_reset_connection.
у нам моей транзакция остается в ожидании.
17 ноя 09, 14:55    [7939960]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить