Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano, jak ponownie skompilować uszkodzoną instalację koordynatora transakcji rozproszonych firmy Microsoft (MSDTC) do użycia z instalacją klastra trybu failover programu SQL Server.
Oryginalny numer KB: 294209
Podsumowanie
Poniższy blog zawiera szczegółowe informacje dotyczące zmian w zachowaniu MSDTC od czasu wydania systemu Windows Server 2008.
Zalecenia MSDTC dotyczące klastra trybu failover SQL
Celem poniższych często zadawanych pytań jest rozwiązanie typowych pytań dotyczących witryny MSDTC w przypadku użycia z wystąpieniami klastra trybu failover programu SQL Server w celu uwzględnienia bieżących zaleceń i najlepszych rozwiązań.
MSDTC jest menedżerem transakcji, który umożliwia aplikacjom klienckim dołączenie kilku różnych źródeł danych w jednej transakcji, a następnie koordynuje zatwierdzanie transakcji rozproszonej na wszystkich serwerach wymienionych w transakcji. Pomaga to zagwarantować, że transakcja zostanie zatwierdzona, jeśli każda część transakcji zakończy się powodzeniem lub zostanie wycofana, jeśli którakolwiek część procesu transakcji zakończy się niepowodzeniem.
Wiele osób, dlaczego musimy zainstalować program MSDTC przed zainstalowaniem programu SQL Server. Nie musisz już wykonywać tej operacji. Wymagane było, aby program SQL Server 2005 był wymagany. Ta wersja programu SQL Server zakończyła swój cykl życia i dlatego zakończyła wymaganie zainstalowania programu SQL Server.
Podczas wdrażania programu SQL Server w środowisku o wysokiej dostępności, takim jak klaster trybu failover systemu Windows, istnieją pewne najlepsze rozwiązania, które mogą sprawić, że zachowanie usług MSDTC będzie bardziej przewidywalne.
Jeśli temat obsługi transakcji między bazami danych i/lub DTC w ramach grupy dostępności pojawia się szybka odpowiedź NIE JEST OBSŁUGIWANA!.
Jest to prawdziwe stwierdzenie, a rozmowa zwykle koncentruje się na ale dlaczego? W rzeczywistości niektóre administratorzy baz danych przetestowali różne formy tych typów transakcji i nie napotkali błędów.
Problem polega na tym, że testowanie nie zostało ukończone, a wymagane działanie zatwierdzania dwufazowego może spowodować utratę danych lub bazę danych, która nie zostanie odzyskana zgodnie z oczekiwaniami w niektórych konfiguracjach. W rzeczywistości testerzy programu SQL Server wprowadzają błędy w strategicznych lokalizacjach, aby utworzyć scenariusze, które są trudne (ale nie niemożliwe) do utworzenia na serwerze produkcyjnym. Aby uzyskać więcej informacji, zobacz Not-Supported: AGs with TC/Cross-Database Transaction (Nieobsługiwane: AGs z transakcjami TC/Cross-Database).
W przypadku klastra trybu failover systemu Windows 2008 i nowszych nie trzeba klasterować MSDTC, aby korzystać z funkcji usługi MSDTC, ponieważ MSDTC został przeprojektowany w systemie Windows 2008. W przeciwieństwie do systemu Windows 2003, jeśli instalujesz klaster trybu failover systemu Windows, trzeba było klaster MSDTC. Nie ma to już zastosowania w przypadku korzystania z systemu Windows 2008, ponieważ domyślnie usługa MSDTC jest uruchomiona lokalnie, nawet z zainstalowanym klastrem trybu failover.
Jeśli wystąpienie klastra trybu failover programu SQL Server wymaga witryny MSDTC i wymaga, aby zasoby MSDTC przechodziły w tryb failover z wystąpieniem programu SQL Server, zalecamy utworzenie zasobu MSDTC w roli failoverCluster, która zawiera wystąpienie programu SQL Server i które używa:
- Nazwa sieci programu SQL Server\punkt dostępu klienta
- Dysk w ramach roli programu SQL Server
- Nazwij zasób MSDTC nazwą serwera wirtualnego SQL.
Konfigurowanie i testowanie nowego zasobu klastra MSDTC przy użyciu programu PowerShell
Utwórz nowy zasób MSDTC zastępujący zawartość między sekcjami i zawierającymi <> poniższe sekcje, a następnie wykonaj je.
$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> Add-ClusterResource -Name $VSqlSrv -ResourceType "Distributed Transaction Coordinator" -Group $SqlRole
Jeśli zasób MSDTC nie zaakceptował podanej nazwy, możesz zmienić nazwę przy użyciu następującego programu PowerShell, zastępując new Distributed Transaction Coordinator wartością RealSqlVsName:
Get-ClusterResource "New Distributed Transaction Coordinator" | %{$_.Name = RealSqlVsName }
Możesz zastąpić
$VSqlSrv
wartość RealSqlVsName, jeśli nadal jest aktywna.Zweryfikuj reguły zapory przy użyciu następującego skryptu:
Set-NetFirewallRule -Name 'RPC Endpoint Mapper' -Enabled True Set-NetFirewallRule -Name 'DTC incoming connections' -Enabled True Set-NetFirewallRule -Name 'DTC outgoing connections' -Enabled True
Ustaw uwierzytelnianie sieciowe MSDTC przy użyciu następującego skryptu:
Set-DtcNetworkSetting -AuthenticationLevel Mutual ` -DtcName "Local" -InboundTransactionsEnabled $True ` -LUTransactionsEnabled $True ` -OutboundTransactionsEnabled $True ` -RemoteAdministrationAccessEnabled $False ` -RemoteClientAccessEnabled $False ` -XATransactionsEnabled $True -verbose
Sprawdź, czy nowy zasób MSDTC jest teraz wyświetlany przy użyciu następującego polecenia:
Get-Dtc -Verbose |Sort-Object DtcName
Przetestuj nowy zasób MSDTC.
Test-Dtc -LocalComputerName RealSqlVsName -Verbose
Możesz zastąpić
$VSqlSrv
wartość RealSqlVsName, jeśli nadal jest aktywna. Użyj polecenia$Env:COMPUTERNAME
, aby przetestować instalację lokalną. Należy wykonać reguły zapory i polecenia programu PowerShell uwierzytelniania MSDTC we wszystkich pozostałych istniejących węzłach klastra.Przetestuj witrynę MSDTC.
W tym przykładzie użyjemy bazy danych AdventureWorks2012, musisz zastąpić rzeczywistą nazwę bazy danych, którą chcesz przetestować. W oknie zapytania programu SQL Server uruchom następującą instrukcję SQL:
USE AdventureWorks2012; GO BEGIN DISTRIBUTED TRANSACTION; -- Enter fake transaction to the database INSERT SQL_Statement DELETE SQL_Statement COMMIT TRANSACTION GO
Powinien zostać wyświetlony problem z jednym wierszem i że wstawiony rekord nie istnieje.
Informacje
Zalecane ustawienia MSDTC dotyczące używania transakcji rozproszonych w programie SQL Server