Связанный SQL-сервер Azure с Premise SQL Server - исключение MSDTC - PullRequest
0 голосов
/ 30 января 2019
  1. У меня есть база данных SQL в Azure
  2. Затем я создал связанный сервер для базы данных SQL из локального сервера SQL
  3. Я использую таблицу, присутствующую в Azure SQLБД в SP в помещении SQL БД

Эта установка работает нормально, кроме случаев, когда там работает служба MSDTC.

Когда служба «DTC» работает, я получаю следующее исключение

Сообщение об исключении верхнего уровня: System.ServiceModel.FaultException: поставщик OLE DB «SQLNCLI11» для связанногосервер "Azure_SQLDb" сообщил об ошибке.Один или несколько аргументов были объявлены провайдером недействительными.Не удалось выполнить операцию, поскольку поставщику OLE DB «SQLNCLI11» для связанного сервера «Azure_SQLDb» не удалось начать распределенную транзакцию.Поставщик OLE DB «SQLNCLI11» для связанного сервера «Azure_SQLDb» вернул сообщение «Неверный параметр».

Мне не нужен связанный сервер Azure для какой-либо транзакции DTC, поэтому я попытался отключить этотопция в свойствах связанного сервера, чтобы увидеть, помогает ли это, но это не помогло.

enter image description here

Я прочитал, что у нас не может быть MSDTC-соединение с лазурным SQLБД, что хорошо для меня, так как у меня не будет никакой транзакции между моим локальным БД и лазурным БД.

Я хотел бы иметь решение для запуска службы DTC, работающей на моем сервере, когда есть подключение к серверу, связанному с Azure sql db.

Ответы [ 2 ]

0 голосов
/ 30 января 2019

@ dks Проблема, с которой вы сталкиваетесь, не является нормальной - обычно это происходит только в том случае, если ваше приложение пытается запустить распределенную транзакцию для координации изменений состояния.(Иногда приложения используют распределенные транзакции для координации изменения состояния между приложением и уровнем данных, поэтому, возможно, это происходит в вашем случае).Если вы работаете с EF или подобным, убедитесь, что он не запускает DTC от вашего имени.

В любом случае, я предлагаю вам перейти к последнему поставщику OLEDB.В прошлом году Microsoft представила обновленного провайдера, и вы можете скачать его здесь:

https://www.microsoft.com/en-us/download/details.aspx?id=56730

0 голосов
/ 30 января 2019

База данных SQL Azure не поддерживает распределенные транзакции.

Распределенные транзакции в базе данных SQL

База данных SQL не поддерживает распределенные транзакции, которые представляют собой транзакции, выполняемые несколькими менеджерами транзакций.(несколько ресурсов).Для получения дополнительной информации см. Распределенные транзакции (ADO.NET) .Это означает, что база данных SQL не позволяет координатору распределенных транзакций Microsoft (MS DTC) делегировать обработку распределенных транзакций.Из-за этого вы не можете использовать ADO.NET или MSDTC для фиксации или отката одной транзакции, которая охватывает несколько баз данных SQL или комбинацию базы данных SQL и локального сервера SQL.

Для получения дополнительной информации,Вы можете увидеть здесь: Обработка транзакций в базе данных SQL Azure Windows .Ссылочный блоб: Распределенная транзакция, похожая на MSDTC, между Azure SQL Server и MSMQ \ queue azure.

Я думаю, что нет решения, которое может вам помочь.

Надеюсь, это поможетвы.

...