Prikaz vseh MSSQL strežnikov znotraj internega omrežja

Pozdrav nazaj po slabem mesecu dni.
Tokrat se bom malenkostno razpisal glede rešitve problema, ki se mi je pojavil tekom tega delovnega tedna.

Problem se nanaša na izdelavo spiska vseh strežnikov znotraj internega omrežja podjetja, na katerih se nahaja/je nameščen MS SQL Server kakršnekoli verzije.
V paketu z njim je sicer za take stvari mogoče uporabi tudi SQL Server Browser Service, vendar to v mojem primeru ne pride v poštev, saj je od množice strežnikov znotraj podjetja, na katerih je nameščen MS SQL, le malo število takih, ki imajo ta servis tudi vklopljen.

Tako mi je seveda najprej prišlo na misel to, da sam izdelam programčič, ki bo take strežnike znal poiskati – strežnike z nameščenim MS SQL-om.
Tako kot vsak program, sem tudi tega poimenoval -> tokrat FindRemoteSQLs.

Program od uporabnika zahteva dva parametra.
Prvi je pot do log datoteke, v katero nato izpisuje rezultate iskanja -> kateri strežniki obstajajo in na katerih izmed njih je nameščen MS SQL.
Drugi parameter pa je domena, znotraj katere bomo strežnike sploh iskali.

Torej, glede na ta dva parametra program preišče AD izbrane domene za računalniki, na katerih je nameščen Windows Server OS.
To stori tako, da med AD objekti izbere samo take, kjer je parameter objectCategory enak “computer” in se parameter operatingSystem začne z nizom “Windows Server”.
Od zadetkov nato uporabi parameter dNSHostName, iz česar pridobi omrežni naslov strežnika. Tega nato uporabi za pinganje strežnika.
Če je ta operacija uspešna, se kliče samo še funkcija, ki preveri, ali je na strežniku MS SQL nameščen.

To, ali je MS SQL na strežniku nameščen, program preveri tako, da pogleda v strežnikove registre za CurrentUser, LocalMachine_32 in LocalMachine_64 pod SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall.

Če na eni izmed teh lokacij najde subkey, kjer se njegov atribut DisplayName začne z nizom “Microsoft SQL Server”, je program ugotovil, da je na strežniku MS SQL nameščen, v nasprotnem primeru pa MS SQL-a ni.

Glede na te ugotovitve izpiše v log datoteko za vsak najden strežnik eno izmed naslednjih možnosti:

  • YES: MS SQL je nameščen
  • NO: MS SQL ni nameščen
  • NAPAKA – The network path was not found: omrežnega naslova strežnika ni bilo mogoče najti
  • NAPAKA – Ping: strežnika ni bilo mogoče ping-ati
  • NAPAKA – Requested registry access is not allowed: dostop do registrov ni bil mogoč

Program je potrebno za vsako domeno pognati z admin user accountom iz posamezne domene zaradi pravic, ker gre za branje registrov.
To je v CMD-ju enostavno rešljivo z ukazom RUNAS ob poganjanju tega programa.

Lep pozdrav!
Gašper Rupnik

{End.}

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Powered by WordPress.com.

Up ↑

%d bloggers like this: