Эта настройка работает нормально, за исключением случаев, когда запущена служба MSDTC.
Когда служба «DTC» запущена, я получаю следующее исключение
Top level exception message : System.ServiceModel.FaultException: The OLE DB provider "SQLNCLI11" for linked server "Azure_SQLDb" reported an error. One or more arguments were reported invalid by the provider. The operation could not be performed because OLE DB provider "SQLNCLI11" for linked server "Azure_SQLDb" was unable to begin a distributed transaction. OLE DB provider "SQLNCLI11" for linked server "Azure_SQLDb" returned message "The parameter is incorrect.".
Мне не нужен связанный сервер Azure для какой-либо транзакции DTC, поэтому я попытался отключить эту опцию в свойствах связанного сервера, чтобы посмотреть, поможет ли это, но это не помогло.
Я читал, что у нас не может быть подключения MSDTC к лазурной базе данных SQL, что хорошо для меня, поскольку у меня не будет никаких транзакций, связанных между моей локальной базой данных и лазурной базой данных sql.
Я хотел бы иметь решение для запуска службы DTC, работающей на моем сервере, когда есть связанное серверное соединение с azure sql db.
Я запускаю запрос на выборку в таблице azure db в SP, присутствующем в локальной базе данных SQL.
Рассмотрите возможность репликации этой таблицы в локальной среде с помощью SQL Data Sync?





База данных SQL Azure не поддерживает распределенные транзакции.
Распределенные транзакции в базе данных SQL
База данных SQL не поддерживает распределенные транзакции, т. е. транзакции с несколькими диспетчерами транзакций (несколько ресурсов). Для получения дополнительной информации см. Распределенные транзакции (ADO.NET) . Это означает, что база данных SQL не позволяет координатору распределенных транзакций Microsoft (MS DTC) делегировать обработку распределенных транзакций. Из-за этого вы не можете использовать ADO.NET или MSDTC для фиксации или отката одной транзакции, которая охватывает несколько баз данных SQL или комбинацию базы данных SQL и локального SQL Server.
Более подробную информацию вы можете увидеть здесь: Обработка транзакций в базе данных Windows Azure SQL. Ссылочный большой двоичный объект: Распределенная транзакция, аналогичная MSDTC, между SQL Server Azure и MSMQ\queue Azure.
Я думаю, что никакое решение не может вам помочь.
Надеюсь, это поможет вам.
@dks Проблема, с которой вы сталкиваетесь, не является нормальной - обычно это происходит, только если ваше приложение пытается запустить распределенную транзакцию для координации изменений состояния. (Иногда приложения используют распределенные транзакции для координации изменения состояния между приложением и уровнем данных, поэтому, возможно, это происходит в вашем случае). Если вы используете EF или аналогичный, убедитесь, что он не запускает DTC от вашего имени.
В любом случае я предлагаю вам перейти на последнюю версию поставщика OLEDB. В прошлом году Microsoft представила обновленный провайдер, и вы можете скачать его здесь:
https://www.microsoft.com/en-us/download/details.aspx?id=56730
укажите, какой запрос вы выполняете и где. Из базы данных SQL Azure он должен иметь возможность выбирать из базы данных SQL Server (при условии подключения к сети и т. д.). Для SQL Server у вас должна быть возможность иметь «DTC» с SQL Azure в качестве единой точки обновления, если это последний коммиттер. Основное техническое требование заключается в том, чтобы сегодня между ними не осуществлялась координация MSDTC. Какую команду вы выполняете? Вставить/обновить/удалить или выбрать вероятные значения