Powershell prin prisma serverului sql, windows it pro

Infrastructura IT pentru întreprinderea dvs.

Au trecut aproape șapte ani de când shell-ul PowerShell a devenit proprietatea specialiștilor în domeniul tehnologiei informației, dar astăzi mulți profesioniști IT nu sunt prea repede pentru a afla ce fel de produs este. Între timp, este foarte posibil (depinde de sarcinile pe care trebuie să le rezolvați la locul de muncă) că PowerShell se va dovedi a fi un instrument cu adevărat neprețuit pentru dvs.







Conform ideii dezvoltatorilor Microsoft, PowerShell ar trebui să devină un mijloc de gestionare a tuturor tipurilor de servere și platforme produse de corporație. Și dacă vorbim despre majoritatea profesioniștilor IT, întrebarea nu este dacă vor sau nu vor folosi tehnologia PowerShell, dar când vor începe să lucreze cu aceasta.

Dar oricum, în opinia experților SQL Server, shell-ul PowerShell a fost întotdeauna învăluit într-un voal de secret. Deci, vreau să vă prezint acest produs, ca să spun așa, prin prisma SQL Server. Firește, nu am ocazia să vă spun tot ce trebuie să știți despre tehnologia PowerShell într-un articol care conține doar câteva mii de cuvinte. Dar pot demonstra mecanismul de interacțiune dintre PowerShell și SQL Server și poate că acest lucru va fi suficient pentru prima dată.

Dar înainte de a-mi începe povestea, permiteți-mi să fac o observație importantă. Nu sunt în favoarea înlocuirii limbajului T-SQL cu PowerShell. Dacă gestionați în prezent sistemul SQL Server cu acest dialect, nu există nici un motiv să îl refuzați. Dar faptul că mulți experți SQL Server caută modalități de a include shell-ul PowerShell în munca lor zilnică. În opinia mea, putem obține efectul maxim cu utilizarea combinată a PowerShell și T-SQL.

Deci, pentru afaceri

Această politică ar trebui definită o singură dată. Rețineți că atunci când introduceți comanda specificată, nu trebuie să introduceți caracterele PS C:>, deoarece acestea nu fac parte din comandă. Aceasta este doar o invitație de a introduce comenzi, indicând directorul curent în care ar trebui să lucrați. Când studiați tehnologia PowerShell, este util să includeți aceste informații și, din acest motiv, o desemnez aici, precum și în comenzile ulterioare.

Apoi, importați modulul sqlps cu următoarea comandă:

Este posibil ca în procesul de import al modulului să primiți un avertisment despre verbe inacceptabile. Toate comenzile PowerShell, care sunt numite comenzi compuse (cmdlet), trebuie să se conformeze convenției standard de denumire "verb - substantiv". Verbele aplicate ar trebui incluse în lista verbelor standard. NET, cum ar fi Get, Set și Remove. Respectarea standardului de numire facilitează găsirea comenzilor. Modulul sqlps include mai multe comenzi care se abat de la acest standard. Cu alte cuvinte, căutarea uneia dintre comenzile SQL importate poate fi oarecum mai complicată.

O listă similară cu cea afișată pe ecranul 1 apare pe ecran.

Powershell prin prisma serverului sql, windows it pro

Ecran 1. Obținerea unei liste de comenzi compuse disponibile în modulul "Sqlps"

Rețineți că atunci când utilizați PowerShell 3.0 pentru a executa o comandă care face parte din modul, de exemplu, comenzile Restore-SQLDatabase, nu este necesar să preimportați modulul. Și în PowerShell 2.0, pentru a utiliza oricare dintre comenzile modulului sqlps, acest modul trebuie mai întâi să fie importat, pe care l-am făcut acum câteva secunde.

În măsura în care pot fi judecate prin numele comenzilor compuse pe ecranul 1, dacă convenția de numire standard "substantiv-verb" este respectată, utilizatorul poate înțelege cu ușurință ce sarcină are echipa. Dar dacă aveți vreo îndoială, puteți contacta PowerShell pentru ajutor. Să presupunem că vrei să știi ce face comanda Invoke-SQLCmd. Tastați următoarea comandă:

Așa cum se arată pe ecranul 2, această comandă returnează informații despre acțiunea pe care o execută comanda Invoke-SQLCmd a compusului și despre cum să o folosească.

Powershell prin prisma serverului sql, windows it pro

Ecranul 2. Obținerea de ajutor pentru Comanda Combo Invoke-SQLCmd

Dacă aveți nevoie de mai multe informații, puteți adăuga parametrul -full după cum urmează:

Și pe o serie de site-uri de pe Internet există chiar conținut postat de membrii comunității de utilizatori.

Utilizarea unui furnizor de SQL Server

Modulul sqlps include furnizorul SQLServer. Puteți obține informații despre furnizorul SQLServer folosind următoarea comandă:

Rezultatele implementării sale sunt prezentate pe ecranul 3.

Powershell prin prisma serverului sql, windows it pro

Ecranul 3. Obțineți informații de referință despre furnizorul SQL Server

Vă recomandăm să executați această comandă și să dedicați câteva minute studierii informațiilor despre furnizorul SQLServer. Ideea principală conținută în aceste date este că, prin utilizarea furnizorul de servicii a spus, utilizatorul poate muta o copie a SQL Server, ca și cum ar fi un sistem de fișiere și de a prelua informații sau de a face modificări, folosind metodele care sunt folosite atunci când se lucrează cu obiecte PowerShell . De exemplu, comanda compusă Set-Loc este utilizată pentru a schimba directorul curent și comanda Get-ChildItem este utilizată pentru a genera o listă de fișiere și directoare conținute în directorul curent. Oricine este familiarizat cu comanda shell Windows (cmd.exe), va fi, probabil, dispuși să folosească alias-urile corespunzătoare ale comenzii compus - CD-ul și dir. Dacă, să zicem, aveți nevoie pentru a merge la stocarea de SQL Server și de a crea un inventar al conținutului său trebuie să rulați aceste comenzi:

În mod similar, puteți accesa instanța dvs. de SQL Server și puteți trece prin conținutul său. De exemplu, dacă instanța dvs. de server SQL este denumită chi-db01, ați rula următoarele comenzi:







Figura 4 prezintă rezultatele ambelor seturi de comenzi.

Powershell prin prisma serverului sql, windows it pro

Ecranul 4. Lista articolelor PSDrives și conținutul acestora

Rezultatele implementării sale sunt prezentate pe ecranul 5.

Powershell prin prisma serverului sql, windows it pro

Ecranul 5. Lista conturilor pe care trebuie să le introduceți

În jurnal, această comandă este plasată pe mai multe linii, dar când lucrați la consola PowerShell, trebuie să o introduceți într-o singură linie. Acest lucru se aplică și altor comenzi care sunt transferate pe următoarea linie. Așa cum se arată în Figura 6, această comandă generează o listă a tuturor conturilor pentru logare din domeniul Globomantics, precum și informații despre momentul în care fiecare cont a fost creat când a fost modificat ultima dată și cu care baza de date este asociată în mod implicit . Toate aceste informații sunt prezentate într-un format ușor de citit.

Powershell prin prisma serverului sql, windows it pro

Ecranul 6. Obțineți informații de cont pentru conectarea la Globomantics

Dacă expresia conținută în această comandă pare incomprehensibilă, nu vă lăsa să vă deruteze. Merită practică puțin - și o puteți înțelege fără stres. Vreau să obțineți o idee despre ce puteam obține cu expresia PowerShell de bază.

Trebuie să conectați mediul PowerShell ISE deoarece comanda utilizează o comandă compusă Out-GridView pentru a transfera ieșirea într-o fereastră interactivă separată, afișată pe ecranul 7. După cum puteți vedea, tabela conține o listă de baze de date sortate după dimensiune, precum și alte informații referitoare la aceste baze de date.

Powershell prin prisma serverului sql, windows it pro

Ecranul 7. Afișați în tabelul interactiv o listă de baze de date sortate după dimensiune

În plus, utilizatorul poate face modificări obiectelor utilizând modelul de obiect PowerShell. De exemplu, voi descrie în detaliu procedura de modificare a numărului de încercări valide de acces la cont (adică procedura de modificare a proprietății AccountRetryAttempts) pentru Mail Database. Mai întâi trebuie să mergeți la directorul Mail al instanței chi-db01 și să creați o listă a elementelor sale constitutive.

În conținutul directorului, veți găsi obiectul ConfigurationValues. Prin trasarea rezultatelor comenzii dir ConfigurationValues ​​la comanda compozită Get-Member, puteți obține numele și descrierile proprietăților și metodelor obiectului. Comanda arată astfel:

Rezultatele implementării sale sunt prezentate pe ecranul 8.

Powershell prin prisma serverului sql, windows it pro

Ecran 8. Obținerea denumirilor și descrierilor proprietăților și metodelor obiectului ConfigurationValues

După analizarea informațiilor primite, veți putea determina ce proprietăți vor fi utilizate. În acest caz, veți utiliza proprietățile Nume și valoare și le veți folosi în comandă.

Rezultatele comenzii sunt afișate pe ecranul 9. După cum puteți vedea, numărul de încercări valide de accesare a contului este setat în prezent la 1.

Powershell prin prisma serverului sql, windows it pro

Ecranul 9. Extrageți valoarea curentă a proprietății AccountRetryAttempts

Pentru a înțelege cum să utilizați obiectele din SQLServer, veți transfera în mod repetat aceste obiecte utilizând o conductă. Pentru a facilita această procedură, puteți salva obiecte în variabile. Pentru a salva obiectul ConfigurationValues ​​în variabila $ config, executați comanda:

Variabila $ config este o serie de obiecte de configurare, ale căror valori putem obține și seta. Deoarece aceasta este o matrice cu un index începând de la zero și proprietatea AccountRetryAttempts este prima cheie din acest tablou, puteți folosi parametrul $ config [0] pentru a obține și seta valoarea sa. De exemplu, următoarea comandă citește valoarea curentă a proprietății AccountRetryAttempts (adică 1):

Această comandă stabilește valoarea parametrului la 3:

Pentru a vă asigura că această valoare este modificată, putem folosi Get-Item în această comandă:

Rezultatele comenzii sunt afișate pe ecranul 10. După cum puteți vedea, numărul de încercări valide de accesare a contului a crescut la trei.

Ecranul 10. Confirmarea faptului că proprietatea AccountRetryAttempts are o nouă valoare

Sunt gata să recunosc că gestionarea sistemului SQL Server cu ajutorul furnizorului de servicii SQL Server, descris de mine de mai sus, poate prezenta o anumită dificultate. Deci, dacă este posibil, probabil doriți să utilizați comenzile compuse sqlps, deoarece este mai ușor să lucrați cu ele.

Utilizarea comenzilor sqlps

După cum arată numele comenzii Invoke-SQLCmd, sarcina acesteia este de a rula comenzi SQL. Această activitate este efectuată utilizând parametrul Interogare. De fapt, orice expresie T-SQL poate fi executată din linia de comandă PowerShell, spunând astfel:

Figura 11 prezintă rezultate aproximative.

Ecranul 11. Citirea versiunii SQL Server

Am lucrat pe un server SQL Server și am rulat comanda de la o instanță locală a serverului SQL, așa că, în mod implicit, rulează pe computerul local. Cu toate acestea, utilizatorul poate specifica un alt sistem, precum și un alt exemplu, după cum urmează:

Prin instalarea modulelor SQL Server PowerShell pe sistemul desktop, puteți gestiona mai multe servere dintr-un singur nod, ceea ce este foarte convenabil. Dar pentru moment, să executăm mai multe comenzi pe serverul local. Să presupunem că aveți un script New-ComputerDataDB.sql care creează o bază de date ComputerData. Puteți executa execuția utilizând comanda Invoke-SQLCmd compus:

În plus față de crearea unei baze de date, puteți crea un nou tabel din linia de comandă PowerShell. Pentru a face acest lucru, va trebui să creați un șir de intrare (aici-string) care conține interogarea corespunzătoare. Șirul aici-șir este un șir care ocupă mai multe linii și este creat utilizând o metodă specială. Iată un exemplu de astfel de linie, concepută pentru a forma tabelul Calculatoare:

Rețineți că dacă creați un șir aici-șir în mediul de scripting integrat PowerShell ISE, trebuie să vă asigurați că toate liniile sunt aliniate la stânga. După rularea comenzii, variabila de interogare $ va conține codul necesar pentru a crea tabela Calculatoare. După aceasta, puteți rula acest cod cu ajutorul următoarei comenzi:

Această comandă generează tabelul Calculatoare din baza de date ComputerData, care este localizată în instanța chi-db01.

În plus față de crearea de tabele și baze de date, puteți efectua multe alte sarcini. De exemplu, am scris o funcție Simplă Update-MyDB care îmi permite să actualizez tabelul Calculatoare utilizând datele din rețeaua mea. Apoi, am încărcat această funcție în sesiunea PowerShell utilizând comanda Invoke-SQLCmd:

După încărcarea funcției, am putut rula fragmentul de cod după cum urmează:

Acest fragment de cod citește mai întâi lista de computere din fișierul MyComputers.txt. Apoi, pentru fiecare computer listat, utilizează instrumentul de gestionare Windows Management Instrumentation (WMI) pentru a citi informații despre sistemul de operare. În sfârșit, acest fragment de cod rulează funcția Update-MyDB, care actualizează informațiile corespunzătoare din tabelul Calculatoare. În opinia mea, acesta este cel mai important avantaj al gestionării unui sistem SQL Server folosind tehnologia PowerShell, deoarece pot integra interogări SQL în comenzile PowerShell. În plus, pot efectua cu ușurință o solicitare de date direct din shell-ul PowerShell. Pentru aceasta, introduceți următorul cod:

Rezultatele sunt afișate pe ecranul 12.

Powershell prin prisma serverului sql, windows it pro

Ecranul 12. Obținerea de informații despre computere din baza de date ComputerData







Articole similare

Trimiteți-le prietenilor: