Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > DTCTransaction и SQL Profiler


Автор: Glen 18.4.2014, 13:08
У меня почему-то транзакции на моём SQL Server 2008 превращаются в Distributed Transactions; и поэтому я (это и есть моя проблема) не могу их отслеживать в SQL Profiler

У меня есть SQL Server 2008. В числе прочих запросов к нему обращается и некое BizTalk-приложение (не мной написанное). Оно вызывает хранимые процедуры.

Когда я попытался через SQL Profiler посмотреть - что именно в этот момент происходит - то увидел такую картину:

1. Событие SQLTransaction с EventSubClass = '0 - Begin'. Всё понятно - BizTalk "оборачивает" вызов моей процедуры в транзакцию.
2. тут же событие DTCTransaction '7 - Enlisting in a DTC transaction'
затем событие DTCTransaction '1 - Propagate transaction'
ВОПРОС: если я это правильно понял, то транзакция ставновится "Distributed (DTC) transaction". А это почему? У меня реально нет никакой "распределённой базы" размещающейся на нескольких серверах. Оддин сервер, на нём моя база - и всё. Почему же эта транзакция стала distributed?
3. Далее я в Profiler log-е вижу как выполняется моя процедура, заканчивается, и... не вижу как и как делает commit (rollback) для этой транзакции. Последний раз где упоминается ID этой транзакции - это событие RPC:Completed 'exec sp_reset_connection'. Больше я ID этой транзакции не видел - а я ждал ещё 8 минут.

ВОПРОС: - почему в Profiler log-е я не вижу момента когда произведён commit той транзакции? А он был очевидно произведён - логика того BizTalk-приложения такова что вряд ли оно стало бы ждать с commit-ом как только та моя процедура закончилась.

Может, если транзакция не "простая" а Distributed, то SQL Profiler не умет правильно отображать её? А мне сейчас именно нужно отследить момент когда происходит commit (rollback).
Всё усугубляется тем что я не писал то BizTalk-приложение, и потому не знаю - что именно оно делает с транзакциями. Есть ли там нечто что "заставляет" ту транзакцию превращаться в Distributed - этого я просто не знаю.

В SQL Profiler-е я выбирал такие события:
Stored Procedures: RPC Output Parameter; RPC: Completed; RPC:Starting; SP:Completed; SP:Startinng; SP:StmtCompleted; SP:StmtStarting;
TSQL: SQL:BatchCompleted; SQL:BatchStarting
Transactions: все

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)