MSDTC: DTC Tester

Minule jsem psal o nástroji, který provede pouze ping svého protějšku na druhém serveru a tím zjistí, zda je síť prostupná. Nicméně úspěšné „pingnutí“ stále automaticky neznamená, že budou distribuované transakce opravdu fungovat. Existuje tedy další nástroj nazvaný DTCTester, který si můžete stáhnout zde.

DTCTester se připojí na SQL server přes ODBC. V temdb založí dočasnou tabulku, vloží do ní hodnotu, kterou opět načte a vše vypíše na obrazovku.

Pro testovací účely mám založené dva samostatné servery, které nejsou v doméně. Server01 má IP adresu 10.0.0.55 a Server02 je dostupný přes IP 10.0.0.56. SQL Server běží na druhém serveru a připojit se na něj lze přes 10.0.0.56\SQL2016_01. Dalším předpokladem je správné nastavení firewallu atp. Popis nastavení bude náplní dalšího a posledního dílu tohoto miniseriálu.

Jak jsem již psal výše, DTCTester používá ODBC, tedy nejprve je potřeba založit si ODBC Data Source (Administrative Tools -> ODBC Data Sources (64-bit)).
MSDTC DTCTester ODBC 1

MSDTC DTCTester ODBC 2

Po té co jsme založili ODBC Data Source, můžeme spustit samotný DTC Tester. Program nemá žádné grafické rozhranní a lze jej spustit např. z Powershellu s parametry:

dtctester <dsn name> <user name> <password>

Po spuštění testeru uvidíme na obrazovce výpis podobný následujícímu:

Executed: C:\Tools\dtctester.exe
DSN:  server02
User Name: sql2016_01
Password: Win2012Adm
tablename= #dtc26322
Creating Temp Table for Testing: #dtc26322
Warning: No Columns in Result Set From Executing: 'create table #dtc26322 (ival int)'
Initializing DTC
Beginning DTC Transaction
Enlisting Connection in Transaction
Executing SQL Statement in DTC Transaction
Inserting into Temp...insert into #dtc26322 values (1)
Warning: No Columns in Result Set From Executing: 'insert into #dtc26322 values (1) '
Verifying Insert into Temp...select * from #dtc26322 (should be 1): 1
Press enter to commit transaction.

Tester provede založení tabulky, insert hodnoty, select hodnoty a vše průběžně vypisuje na obrazovku. Pak čeká na stisknutí libovolné klavesy a my se mezitím můžeme podívat, co se děje na cílovém serveru Server02.

MSDTC DTCTester Transaction

Po přepnutí na druhý server si otevřeme Component Services (Administrative Tools -> Component Services) a nalistujeme si Transaction List lokální DTC služby. Zde vidíme aktivní transakci. Dále bychom mohli zkontrolovat, že se na SQL serveru vytvořila dočasná tabulka #dtc26322. Je tedy vidět, že se DTCTester úspěšně připojil k SQL serveru. Přepneme se zpět na Server01 a stiskem libovolné klavesy necháme DTCTester pokračovat. Ve výpisu by se mělo objevit pokračování.

Commiting DTC Transaction
Releasing DTC Interface Pointers
Successfully Released pTransaction Pointer.
Disconnecting from Database and Cleaning up Handles

DTCTester provede commit transakce a zároveň aktivní transakce zmizí i z výpisu v Component Services.

V dalším díle se podíváme na nastavení samotného MSDTC, firewallu atp.