Dedicated Admin Connection és a TCP port

A DAC-ról már írtam legalább kétszer, és említettem, hogy a DAC egy véletlenszerűen választott porton figyel. Na, ez természetesen így ebben a formában nem igaz, csak mérnöki szemlélettel egyszerűsítettem (a matematikusok szerint meg hazudtam).

Szóval a DAC portját a következőképpen találja ki az SQL Server: ha a default instance-ről van szó, akkor ő alapból a TCP 1434 portra akar ráülni, amennyiben az szabad (ezért lehet praktikus a TCP 1434-et nem odaadni named instance-nak). Ha nem szabad az a port, vagy named instance-ról van szó, akkor választ magának véletlenszerűen egy portot.

Ez persze felvet egy csomó kellemetlen problémát, mindenekelőtt azt, hogy honnan a francból fogom tudni, hogy hol a DAC. Erre a következő megoldások léteznek:

  • Elindítod az SQL Browser service-t, ami feltérképezi az adott oprendszeren futó összes SQL instance-ot, és kérdés esetén megmondja. Ez kényelmes, de én rühellem az SQL Browsert, mert szerintem van elég baj anélkül is, hogy egy beépített biztonsági rést használok.
  • Felolvasod az SQL Server errorlogjának az első pár tucat sorát, konkrétan a Dedicated admin connection support was established for listening locally on port XXXX. (PowerShell: Select-String “Dedicated admin connection support” [errorlog helye]) Direktben arra a portra kapcsolódsz, mintha csak egy SQL lenne ott (ideális esetben van is).
  • Keresel egy szabad portot, amit semmilyen alkalmazás nem bitorol. Ezt te lefoglalod a DAC részére, leírod, kiragasztod az ajtóra, stb. Majd megkéred a DAC-ot, hogy használja is azt a portot. Ezt ugyanis be lehet állítani a registryben, és akkor az SQL Server a 1434 helyett a registryben szereplő értéket fogja defaultnak tekinteni. A kulcs helye pedig a HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.X\MSSQLServer\SuperSocketNetLib\AdminConnection\Tcp gombócban lakó TcpDynamicPorts érték (X= az instance-unk sorszáma). Ami alapból 1434.

Természetesen az egész bejegyzést az egy szem registry kulcsért írtam. Ez egyébként tűzfalas környezetben is nagy segítség lehet, mert jelentősen lehet növelni az esélyét annak, hogy elérjük a SQL-t DAC-on keresztül.

(a megoldás egy MS KB cikkből származik, de sajnos elég kereshetetlen, én célirányos kereséssel nem találtam meg fél óra alatt. Se bing, se gugli.)

Leave a comment