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

Откуда:
Сообщений: 1196
Обычная репликация транзакций. Издатель, дистрибьютор и подписчик на разных машинах.
Столкнулся со следующей проблемой.
На подписчике висят незавершённые транзакции от дистрибьютора, причём никаких команд не выполняется, но таблицы блокируются. После убивания сессии опять восстанавливаются. Я так понимаю, что дистрибьютор пытается провести какую-то финализацию, но не могу отследить, что именно он хочет сделать.

Кто сталкивался?
29 ноя 12, 13:15    [13548861]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций - висят открытые транзакции  [new]
Crimean
Member

Откуда:
Сообщений: 13147
покажите
29 ноя 12, 14:17    [13549611]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций - висят открытые транзакции  [new]
invm
Member

Откуда: Москва
Сообщений: 9719
Была такая хрень с оракловыми подписчиками. Вылечилось обновлением ораклового клиента на дистрибьюторе.
Подробное журналирование у дистр-агента включено?
Ну и, традиционно, select @@version.
29 ноя 12, 14:24    [13549670]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций - висят открытые транзакции  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Издатель: Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64)
Jun 28 2012 08:36:30
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.0 <X64> (Build 6002: Service Pack 2)

Дистрибьютор: Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64)
Jun 28 2012 08:36:30
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

Подписчик: Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64)
Jun 28 2012 08:36:30
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: )
29 ноя 12, 15:40    [13550373]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций - висят открытые транзакции  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Подробное журналирование отключено.
29 ноя 12, 15:58    [13550527]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций - висят открытые транзакции  [new]
Jovanny
Member

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

Что показать-то?
29 ноя 12, 16:08    [13550625]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций - висят открытые транзакции  [new]
Crimean
Member

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

вот это:

> На подписчике висят незавершённые транзакции от дистрибьютора

что значит "висят". по возможности, "в картинках"
29 ноя 12, 16:09    [13550634]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций - висят открытые транзакции  [new]
invm
Member

Откуда: Москва
Сообщений: 9719
Jovanny
Подробное журналирование отключено.
Ну так включите и понаблюдайте чего дистр-агент делает.
29 ноя 12, 16:13    [13550683]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций - висят открытые транзакции  [new]
Jovanny
Member

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

Delivering replicated transaction.
29 ноя 12, 16:40    [13550954]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций - висят открытые транзакции  [new]
Crimean
Member

Откуда:
Сообщений: 13147
да покажите уже что процесс дистрибутора делает. а то окажется что он сложную команду доставить не может ибо кто-то поленился в свойствах табличных артиклей поставить "доставку индексов", которая по умолчанию снята, только ПК, только хардкор..
29 ноя 12, 16:44    [13550999]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций - висят открытые транзакции  [new]
Jovanny
Member

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

К сообщению приложен файл. Размер - 40Kb
29 ноя 12, 16:55    [13551103]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций - висят открытые транзакции  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Это из sys.dm_tran_locks.
29 ноя 12, 16:55    [13551115]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций - висят открытые транзакции  [new]
Crimean
Member

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

не наложенные блокировки, а что процесс делает и чего он ждет
29 ноя 12, 16:56    [13551124]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций - висят открытые транзакции  [new]
Jovanny
Member

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

В sys.dm_exec_requests строк для этой сессии нет, а в sys.sysprocesses


<?xml version="1.0" ?>
<RESULTS0>
	<RECORD>
		<spid>53</spid>
		<kpid>0</kpid>
		<blocked>0</blocked>
		<waittype>0x0000</waittype>
		<waittime>0</waittime>
		<lastwaittype>MISCELLANEOUS                   </lastwaittype>
		<waitresource>                                                                                                                                                                                                                                                                </waitresource>
		<dbid>7</dbid>
		<uid>1</uid>
		<cpu>122926</cpu>
		<physical_io>9803</physical_io>
		<memusage>2</memusage>
		<login_time>2012-11-29 07:22:59.733</login_time>
		<last_batch>2012-11-29 08:06:40.427</last_batch>
		<ecid>0</ecid>
		<open_tran>1</open_tran>
		<status>sleeping                      </status>
		<hostname>CRAWLERDB                                                                                                                       </hostname>
		<program_name>CRAWLERDB_V2_WebCrawler3_DWPriceCommon                                                                                          </program_name>
		<hostprocess>28124     </hostprocess>
		<cmd>AWAITING COMMAND</cmd>
		<net_library>TCP/IP      </net_library>
		<stmt_start>0</stmt_start>
		<stmt_end>0</stmt_end>
		<request_id>0</request_id>
	</RECORD>
</RESULTS0>
29 ноя 12, 17:07    [13551266]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций - висят открытые транзакции  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
А такой запрос
SELECT s.*
FROM sys.dm_exec_sessions AS s
WHERE EXISTS
    (
    SELECT *
    FROM sys.dm_tran_session_transactions AS t
    WHERE t.session_id = s.session_id
    )
    AND NOT EXISTS
    (
    SELECT *
    FROM sys.dm_exec_requests AS r
    WHERE r.session_id = s.session_id
    );

возвращает
<RESULTS0>
	<RECORD>
		<session_id>53</session_id>
		<login_time>2012-11-29 07:22:59.733</login_time>
		<host_name>CRAWLERDB</host_name>
		<program_name>CRAWLERDB_V2_WebCrawler3_DWPriceCommon</program_name>
		<transaction_isolation_level>2</transaction_isolation_level>
		<lock_timeout>-1</lock_timeout>
		<deadlock_priority>0</deadlock_priority>
		<row_count>0</row_count>
		<prev_error>0</prev_error>
		<last_successful_logon>NULL</last_successful_logon>
		<last_unsuccessful_logon>NULL</last_unsuccessful_logon>
		<unsuccessful_logons>NULL</unsuccessful_logons>
		<group_id>2</group_id>
	</RECORD>
</RESULTS0>
29 ноя 12, 17:11    [13551317]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций - висят открытые транзакции  [new]
Crimean
Member

Откуда:
Сообщений: 13147
да, криминал налицо!..
надо внимательно смотреть свойства реплики / профиль агента дистрибуции
а если доставка сделана процедурами - смотреть, не накосячено ли там
29 ноя 12, 17:14    [13551359]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций - висят открытые транзакции  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Может это быть из-за проблем с сетью? А то часто ожидание ASYNC_NETWORK_IO наблюдается.
29 ноя 12, 17:23    [13551471]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций - висят открытые транзакции  [new]
Crimean
Member

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

от сетки - крайне вряд ли. коннект у вас живой, ничего не делает, никого не ждет, просто в нем "осталась" незакрытая транзакция
относительно несложно это "штатно" повторяется с использованием "command timeout" и транзакций
ну или, если реплика с использованием хранимок и в них руками лазили - можно в этих хранимках "накосячить", забыть commit или в catch, скажем, "забыть" rollback
еще вариант, из "относительно логичных" - таки бага в реплике, но я ее не получал, но у меня есть свои "правила приличия" для настройки реплики, возможно они и "спасают"
29 ноя 12, 17:27    [13551509]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций - висят открытые транзакции  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Доставка сделана процедурами, но в них не лазили. И везде вроде всё в порядке.
29 ноя 12, 18:09    [13551865]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций - висят открытые транзакции  [new]
Crimean
Member

Откуда:
Сообщений: 13147
Jovanny
И везде вроде всё в порядке.


а что вы этим хотели сказать?
29 ноя 12, 18:11    [13551874]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций - висят открытые транзакции  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Ни административные представления, ни Data Collection не показывают длительных запросов ни на подписчике, ни на дистрибьюторе.
29 ноя 12, 18:50    [13552115]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций - висят открытые транзакции  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Я было подумал, что в базе distribution какие-нибудь проблемы, может индексы перестроить надо, статистику пересобрать,
но там всё нормально.
Хотя есть одна проблемка. Процедура sp_MSsubscription_cleanup долго работает. В частности запрос
update MSsubscriptions  
		set status = @INACTIVE ...
.
Попробую поискать ещё в этом направлении.
29 ноя 12, 18:57    [13552156]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций - висят открытые транзакции  [new]
Crimean
Member

Откуда:
Сообщений: 13147
отблин, магнитные бури сегодня, что ли..
у вас коннект от дистрибюшен агента к подписчику висит с открытой транзакцией и без команд
искать причину надо начиная с профиля / настроек упомянутого агнента
собственно база дистрибуции к этому никакого отношения не имеет
во-первых с какого перепугу коннект остается. во-вторых с какого перепугу там транзакция
29 ноя 12, 19:23    [13552271]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций - висят открытые транзакции  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Профиль дистрибьюшн агента там "Continue on data consistency errors.", потому что писалось сразу не в целевую таблицу, а в буферную, и валидация давала ошибки. Этот профиль у меня стоит и на других публикациях и отрабатывает нормально. Из него сделал пользовательский профиль и добавил HistoryVerboseLevel = 3. На какие параметры ещё смотреть, ума не приложу.
29 ноя 12, 19:39    [13552336]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций - висят открытые транзакции  [new]
Crimean
Member

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

как вариант - стопнуть агента. коннект должен пропасть. пустить профайлер на батч комплит, рпц комплит. стартануть агента. посмотреть, что он кидает за команды. дальше - по результатам найденного.
29 ноя 12, 20:18    [13552451]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить