Acces remote la un SQL Server 2012 Express Edition

Pe o instalare implicită a ediției gratuite SQL Server 2012 Express accesarea server-ului de la distanță este dezactivată; numai aplicațiile de pe aceeași mașină pot apela serviciile. Dacă ai nevoie de acest scenariu – accesarea de pe alte mașini – trebuie să dai drumul unor servicii.

Detaliez undeva mai jos cu capturi de ecran pașii pe care i-am parcurs eu, dar pe scurt ar trebui să:

  1. Dai drumul serviciului SQL Server Browser. Este un pas opțional, dar ajută mult. Mai ales dacă ai mai multe instanțe SQL Server pe aceeași mașină.
  2. Pui instanța SQL Server să asculte pe un anume port al adresei (sau adreselor) IP.
  3. Permiți sus-numitului SQL Server să accepte conexiuni remote.
  4. Activezi, tot în SQL Server, autentificare mixed-mode. Adică utilizatorii sau aplicațiile să se poată loga și cu conturi de domeniu/Windows dar și cu conturi native gestionate de SQL Server. Pasul ăsta e tot opțional.
  5. Dai drumul din Windows Firewall la porturile pe care stau cu urechea SQL Server Browser și instanța SQL Server.

Pentru că imaginile vorbesc de la sine, să le lăsăm să curgă:

Vezi cu holbanii Citești că n-ai treabă🙂
Screenshot: Pornire SQL Server Browser 1 • Pornire SQL Server Browser (opțional)

Deschid SQL Server Configuration Manager. Acolo văd că, implicit, serviciul SQL Server Browser nu este activat la instalarea SQL Server Express. Seviciul ăsta se uită pe mașina gazdă ca să vadă ce instanțe SQL Server rulează, pe ce porturi dinamice ascultă, la ce adrese IP, ce parametri de apel au…

Screenshot: Contul de rulare SQL Server Browser 2 • Contul de rulare SQL Server Browser

Am dat click-dreapta pe SQL Server Browser. De ăsta, contul de rulare, nu m-am atins. În general nu ai nevoie să te atingi, decât poate în medii enterprise; dar atunci n-ai mai avea nevoie de SQL Server Express, nu? Îți iei o ediție mai tare cu niște bani.

Screenshot: Pornire automată SQL Server Browser 3 • Pornire automată SQL Server Browser

Dacă tot am dat drumul serviciului, am zis c-ar trebui să pornească automat de fiecare dată când pornește mașina, în loc de manual (sau dezactivat). Că doar n-oi sta cu ochii pe el.

Screenshot: Activare TCP/IP pentru SQL Server 4 • Activare TCP/IP pentru SQL Server

Cum spuneam, ediția asta ascultă implicit numai pentru cereri sosite de pe aceeași mașină, nu și din rețea. Așa că protocolul ăsta trebuie activat, fiindcă el este ținut la rece de SQL Server Express.

Screenshot: Portul pe care ascultă SQL Server 5 • Portul pe care ascultă SQL Server

Acum știm că SQL Sever poate primi cereri din rețea pe TCP/IP, dar pe ce port?

Am dat clic-dreapta pe protocolul TCP/IP proaspăt activat. Apoi… captura de ecran vorbește de la sine. SQL Server Management Studio, bunăoară, comunică la distanță cu SQL Server prin acest port, de obicei, 1433 (TCP, nu UDP). Ulterior va trebui să dau drumul acestui port prin firewall, ca să ajungă cererile la SQL Server.

Screenshot: SQL Server Management Studio 6 • SQL Server Management Studio

Am nevoie de consola de administrare ca să dau click-dreapta pe nodul server și să editez ceva la Properties.

Screenshot: SQL Server Authentication Mode 7 • SQL Server Authentication Mode

În scenarii de remote access, e posibil ca utilizatorii (sau aplicațiile) de SQL Server să nu aibe un cont de Windows pentru autentificare, ci vor folosi un cont nativ gestionat de SQL Server. Că poate n-aș vrea să creez un cont în Windows pentru orice aplicație sau user de SQL.

Screenshot: Conexiuni la distanță prin rețea la SQL Server 8 • Permitem conexiuni la distanță prin rețea la SQL Server

Ăsta e ultimul pas de făcut în SQL Server Management Studio. Ați fi tentați să credeți că aici s-a-ncheiat călătoria inițiatică, dar vă înșelați. Cererile de la distanță, prin rețea, trebuie să treacă și de firewall ca să ajungă la SQL Server.

Screenshot: Repornire servicii SQL 9 • Repornire servicii SQL

Pentru că am modificat parametrii de funcționare atât la SQL Server cât și SQL Server Browser, nu uitați că va fi necesar și-un restart al serviciilor înainte ca modificările să aibe efect. așa că ne întoarcem un pic în SQL Server Configuration Manager.

Screenshot: Network and Sharing Center 10 • Network and Sharing Center

Dăm click dreapta pe pictograma de rețea din System Tray. De fapt, noi vrem să ajungem la Windows Firewall…

Screenshot: Windows Firewall 11 • Windows Firewall

Dacă tot am ajuns la Windows Firewall, hai să adăugăm niște setări mai avansate, ca să menținem sistemul cât de cât securizat.

Screenshot: Adăugăm reguli pentru conexiuni inbound 12 • Adăugăm reguli pentru conexiuni inbound

Avem nevoie de 2 reguli prin care permitem conexiuni din afara mașinii către cele 2 servicii SQL Server.

Screenshot: Începem cu SQL Server Browser 13 • Începem regula pentru SQL Server Browser

Înainte ca un user sau o aplicație să poată vorbi cu SQL Server, trebuie să știe pe ce port. Pentru asta, îl va întreba pe SQL Server Browser…

Screenshot: Portul SQL Server Browser 14 • Portul SQL Server Browser

SQL Server Browser stă și-ascultă pe portul UDP 1434, ca să direcționeze clienții către portul dinamic alocat instanței SQL Server.

Screenshot: Permitem conexiuni inbound 15 • Nimic de schimbat

Adică permitem conexiunea inbound…

Screenshot: Pe toate rețelele 16 • Permitem conexiuni pe toate profilele de rețea
Screenshot: Numele regulii firewall 17 • Numele regulii firewall

Dăm un nume și o descriere, că poate fi util ulterior:

SQL Server Browser Service remote access
Allow incoming requests to SQL Server Browser Service. The service is routing to proper dynamic port and address of a SQL Server instance.

Screenshot: Start pentru regula SQL Server 18 • Start pentru regula SQL Server

SQL Server are nevoie de o regulă similară ca să poată primi cereri prin firewall. Diferă portul.

Screenshot: Port TCP 19 • Alegem port TCP

Ne amintim că SQL Server Browser voia port UDP 1434; SQL Server comunică implicit pe portul TCP 1433, dar acesta poate fi dinamic modificat. Detalii am găsit în Help-ul SQL Server Configuration Manager, la SQL Server Browser.

Screenshot: Permitem conexiuni inbound 20 • Nimic de schimbat

Adică permitem conexiunea inbound…

Screenshot: Pe toate rețelele 21 • Permitem conexiuni pe toate profilele de rețea
Screenshot: Numele regulii firewall 22 • Numele regulii firewall

Dăm un nume și o descriere, că poate fi util ulterior:

SQL Server remote access.
Allow incomming requests to a SQL Server instance from remote client applications.

Screenshot: Regulile nou create 23 • Regulile nou create…

Cele 2 reguli pe care le-am creat apar în listă. Mă asigur că sunt activate și la nevoie le pot dezactiva oricând.

Screenshot: Regula SQL Server Browser - detalii 24 • Regula SQL Server Browser – detalii

Am dat drumul porturilor respective, treaba ar fi gata, conexiunile sunt posibile. Dar ca să ne păzim curu’ cât mai bine, parcă aș detalia cum se poate comunica pe aceste porturi. Așa că selectez regula și fac click pe Properties

Screenshot: Regula se aplică doar pentru SQL Server Browser 25 • Regula se aplică doar pentru SQL Server Browser

Cu alte cuvinte, portul este deschis, dar numai aplicația în cauză poate comunica pe el: va trebui să selectez calea către SQL Server Browser, de obicei:

%ProgramFiles% (x86)\Microsoft SQL Server\90\Shared\sqlbrowser.exe

Screenshot: SQL Server Browser rulat ca serviciu 26 • SQL Server Browser rulat ca serviciu

Și merg chiar mai adânc: EXE-ul SQL Server Browser poate comunica pe acel port, dar numai când e rulat ca serviciu.

D-aia am dat clic pe settings la pasul anterior și-am ales SQLBrowser aici.

Screenshot: Regula SQL Server - detalii 27 • Regula SQL Server – detalii

Practic reiau ciclul de la pasul 23 cu regula introdusă în Windows Firewall pentru SQL Server…

Screenshot: Regula se aplică doar pentru SQL Server 28 • Regula se aplică doar pentru SQL Server

Portul TCP 1433 este deschis, dar numai aplicația în cauză poate comunica pe el: va trebui să selectez calea către SQL Server, care este, de obicei:

%ProgramFiles%\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\Binn\sqlservr.exe

Screenshot: SQL Server rulat ca serviciu 29 • SQL Server rulat ca serviciu

Ca la pasul 26: EXE-ul SQL Server poate comunica pe acel port, dar numai când e rulat ca serviciu. D-aia am dat clic pe settings la pasul anterior și-am ales SQL Server (SQLEXPRESS) aici.

O vorbă despre cât de opțional e SQL Server Browser

În lipsa SQL Server Browser, apelarea remote a unui SQL Server e mai complicată decât strigând cu username și parolă către MAȘINĂ\INSTANȚĂ. Trebuie să specifici adresa IP și portul pe care ascultă o instanță. Însă implicit instanțele ascultă pe porturi dinamice. Deci ar trebui să le configurezi porturile static. Dacă securitatea trebuie să fie foarte strictă, nu ai decât instanța default, nu vrei să dai drumul încă unui serviciu sau portului 1434, atunci poți renunța la SQL Server Browser. Dar fără el ai mai mult de muncă; mult mai mult. Cum spuneam, pentru masochiști detalii sunt în Help-ul SQL Server Configuration Manager, la SQL Server Browser.

Lasă un răspuns

Completează mai jos detaliile despre tine sau dă clic pe un icon pentru autentificare:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare / Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare / Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare / Schimbă )

Fotografie Google+

Comentezi folosind contul tău Google+. Dezautentificare / Schimbă )

Conectare la %s