Как я могу найти причину моей транзакции для продвижения? - PullRequest
2 голосов
/ 22 апреля 2010

У меня есть веб-сайт, который обслуживает веб-сервисы (смесь .asmx и WCF), который в основном использует LINQ to SQL и System.Transactions.Иногда мы видим, что транзакция превращается в распределенную транзакцию, которая вызывает проблемы, поскольку наши веб-серверы изолированы от наших баз данных таким образом, что мы не можем использовать MSDTC.

Я настроил трассировку для системы.Транзакции, добавив в свой web.config следующее:

<system.diagnostics>
  <sources>
    <source name="System.Transactions" switchValue="Information">
      <listeners>
        <add
          name="tx"
          type="System.Diagnostics.XmlWriterTraceListener"
          initializeData="tx.log"
          />
      </listeners>
    </source>
  </sources>
</system.diagnostics>

Это очень интересно и показывает мне, когда транзакция продвигается, но я нахожу, что на самом деле это не помогает понять, почему.

Существует ли эквивалентный механизм трассировки для ADO.NET, который будет показывать мне при создании соединений, включая переменные, которые влияют на пул (пользователь, строка cnn, область транзакции)?

1 Ответ

2 голосов
/ 23 апреля 2010

Вы можете взглянуть на Трассировка доступа к данным в SQL Server 2005 (там также есть ссылка на версию SQL Server 2008).В этой статье описывается, как настроить трассировку и как читать сгенерированные файлы.Я не уверен, даст ли он именно то, что вы хотите, но он определенно покажет строки соединений / соединений.С другой стороны, генерируется много выходных данных.

Другой вариант - запустить SQL Server Profiler или трассировка на стороне сервера для захвата соединений, операторов SQL и транзакций.

...