Перестроение или перемещение установки MSDTC для использования с отказоустойчивого кластера SQL
В этой статье описывается, как перестроить неработающий экземпляр microsoft Distributed Transaction Coordinator (MSDTC) для использования с отказоустойчивой кластеризованной SQL Server установкой.
Применимо к: Windows Server 2019, Windows Server 2016, Windows Server 2012 R2
Исходный номер базы знаний: 294209
Сводка
В следующем блоге содержатся подробные сведения об изменениях в поведении MSDTC с момента выпуска Windows Server 2008.
Рекомендации MSDTC для отказоустойчивого кластера SQL
Цель следующих часто задаваемых вопросов (часто задаваемых вопросов) заключается в том, чтобы ответить на часто задаваемые вопросы с MSDTC при использовании с SQL Server отказоустойчивых кластеризованных экземпляров, чтобы включить текущие рекомендации и рекомендации.
MSDTC — это диспетчер транзакций, который позволяет клиентским приложениям включать несколько различных источников данных в одну транзакцию, а затем координирует фиксацию распределенной транзакции по всем серверам, которые включены в транзакцию. Это помогает гарантировать фиксацию транзакции, если каждая часть транзакции успешно завершается, или выполняется откат в случае сбоя какой-либо части процесса транзакции.
Многие люди спрашивают, почему необходимо установить MSDTC перед установкой SQL Server. Вам больше не нужно выполнять эту операцию. Это было требование, которое требовалось SQL Server 2005 году. Эта версия SQL Server завершила свой жизненный цикл и, таким образом, прекратила требование установки SQL Server.
При развертывании SQL Server в высокодоступной среде, такой как отказоустойчивая кластеризация Windows, существуют определенные рекомендации, которые могут сделать поведение служб MSDTC более предсказуемым.
Если в разделе о поддержке транзакций между базами данных и (или) DTC в группе доступности возникает быстрый ответ НЕ ПОДДЕРЖИВАЕТся!.
Это верное заявление, и разговор, как правило, затем сосредоточиться на, но почему? Фактически, некоторые администраторы баз данных тестировали различные формы этих типов транзакций и не сталкивались с ошибками.
Проблема заключается в том, что тестирование не завершено, и требуемая двухэтапная фиксация может привести к потере данных или к восстановлению базы данных, которая не восстанавливается должным образом в определенных конфигурациях. Фактически, SQL Server тестировщики внедряют сбои в стратегически важных расположениях, чтобы создать сценарии, которые трудно (но не невозможно) создать на рабочем сервере. Дополнительные сведения см. в разделе Not-Supported: AGs with TC/Cross-Database Transaction.
При использовании отказоустойчивого кластера Windows 2008 и более поздних версий не нужно кластерировать MSDTC, чтобы использовать функции службы MSDTC, так как MSDTC был перепроектирован в Windows 2008. В отличие от Windows 2003, при установке отказоустойчивого кластера Windows необходимо было кластерировать MSDTC. Это больше не происходит при использовании Windows 2008, так как по умолчанию служба MSDTC работает локально, даже если установлена отказоустойчивая кластеризация.
Если для экземпляра отказоустойчивой кластеризации SQL Server требуется MSDTC и ресурсы MSDTC требуют отработки отказа с экземпляром SQL Server, рекомендуется создать ресурс MSDTC в роли FailoverCluster, который содержит экземпляр SQL Server и который он использует:
- Сетевое имя SQL Server\точка доступа клиента
- Диск в роли SQL Server
- Присвойтите ресурсу MSDTC имя виртуального сервера SQL.
Настройка и тестирование нового ресурса кластера MSDTC с помощью PowerShell
Создайте новый ресурс MSDTC, заменив содержимое между и включая приведенные <> ниже разделы, а затем выполните.
$SqlRole = <Actual name of the role containing the SQL Server instance> $SqlNetName = <Actual SQL Servernetwork resourcename> $VSqlSrv = <Actual SQL Server virtual server name> $CluDsk = <Actual disk resource name>
Если ресурс MSDTC не принял предоставленное имя, можно изменить имя с помощью следующей команды PowerShell, заменив новый координатор распределенных транзакций на RealSqlVsName:
Get-ClusterResource "New Distributed Transaction Coordinator" | %{$_.Name = RealSqlVsName }
Вы можете заменить
$VSqlSrv
значение RealSqlVsName, если он по-прежнему активен.Проверьте правила брандмауэра с помощью следующего скрипта:
Set-NetFirewallRule -Name 'RPC Endpoint Mapper' -Enabled True Set-NetFirewallRule -Name 'DTC incoming connections' -Enabled True Set-NetFirewallRule -Name 'DTC outgoing connections' -Enabled True
Настройте проверку подлинности сети MSDTC с помощью следующего скрипта:
Set-DtcNetworkSetting -AuthenticationLevel Mutual ` -DtcName "Local" -InboundTransactionsEnabled $True ` -LUTransactionsEnabled $True ` -OutboundTransactionsEnabled $True ` -RemoteAdministrationAccessEnabled $False ` -RemoteClientAccessEnabled $False ` -XATransactionsEnabled $True -verbose
Убедитесь, что новый ресурс MSDTC теперь указан с помощью следующей команды:
Get-Dtc -Verbose |Sort-Object DtcName
Протестируйте новый ресурс MSDTC.
Test-Dtc -LocalComputerName RealSqlVsName -Verbose
Вы можете заменить
$VSqlSrv
значение RealSqlVsName, если он по-прежнему активен. Используйте$Env:COMPUTERNAME
для тестирования локальной установки. Необходимо выполнить правила брандмауэра и команды PowerShell проверки подлинности MSDTC на всех других существующих узлах кластера.Протестируйте MSDTC.
В этом примере мы будем использовать базу данных AdventureWorks2012. Необходимо заменить фактическое имя базы данных, с которым вы хотите протестировать. В окне запроса SQL Server выполните следующую инструкцию SQL:
USE AdventureWorks2012; GO BEGIN DISTRIBUTED TRANSACTION; -- Enter fake transaction to the database INSERT SQL_Statement DELETE SQL_Statement COMMIT TRANSACTION GO
Теперь вы увидите, что одна строка затронута и что вставленная запись не существует.
Ссылки
Рекомендуемые параметры MSDTC для использования распределенных транзакций в SQL Server
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по