Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

Get-SqlDatabase

Termin Definicja
Get-SqlDatabase

Get-SqlDatabase to polecenie modułu SqlServer PowerShell zwracające obiekt reprezentujący wskazaną bazę danych.

Rola polecenia Get-SqlDatabase w module SqlServer

Get-SqlDatabase jest poleceniem modułu SqlServer dla PowerShell, przeznaczonym do pobierania informacji o bazach danych znajdujących się na wskazanej instancji Microsoft SQL Server. Wynikiem nie jest pojedynczy tekst, lecz obiekt PowerShell reprezentujący bazę danych. Dzięki temu zwrócone właściwości można filtrować, sortować, wyświetlać w tabeli albo przekazywać potokiem do kolejnych poleceń. Cmdlet służy przede wszystkim do odczytu metadanych i właściwości bazy, a nie do wykonywania zapytań SQL zawierających dane aplikacyjne.

Najczęściej polecenie wykorzystuje się z parametrem -ServerInstance, który określa nazwę instancji SQL Server. Przykładowe wywołanie ma postać Get-SqlDatabase -ServerInstance "localhost". W zależności od konfiguracji może to oznaczać lokalną instancję domyślną albo konkretną instancję nazwaną, na przykład "KOMPUTER\SQLEXPRESS". W środowisku, w którym wymagane jest jawne wskazanie poświadczeń, można użyć parametru -Credential. Samo poprawne zapisanie komendy nie gwarantuje jednak wyniku, ponieważ konto musi mieć możliwość połączenia z daną instancją i odczytu wymaganych informacji.

Wybór konkretnej bazy i właściwości obiektu

Jeżeli potrzebna jest jedna wskazana baza, można użyć parametru -DatabaseName, na przykład Get-SqlDatabase -ServerInstance "localhost" -DatabaseName "AppDb". Bez tego parametru cmdlet może zwrócić kolekcję baz dostępnych na instancji, zależnie od uprawnień bieżącego użytkownika i sposobu zestawienia połączenia. Wynik można ograniczyć także przez potok PowerShell, używając polecenia Where-Object. Przykładowo Get-SqlDatabase -ServerInstance "localhost" | Where-Object Name -eq "AppDb" wybiera obiekt, którego właściwość Name ma określoną wartość.

Obiekt zwrócony przez Get-SqlDatabase udostępnia właściwości opisujące bazę oraz jej stan. W praktyce można sprawdzać między innymi nazwę, identyfikator, rozmiar, datę utworzenia, model odzyskiwania, stan oraz informacje związane z dostępnością. Dokładny zestaw właściwości może zależeć od wersji modułu SqlServer, wersji serwera i rodzaju obiektu zwróconego przez bibliotekę SMO, czyli SQL Server Management Objects. Do obejrzenia właściwości służy polecenie Get-Member, na przykład Get-SqlDatabase -ServerInstance "localhost" -DatabaseName "AppDb" | Get-Member. Do selektywnego wyświetlenia pól można zastosować Select-Object Name, Status, RecoveryModel.

Praca z potokiem PowerShell i obiektami SMO

Istotną cechą Get-SqlDatabase jest obiektowy charakter wyniku. PowerShell nie musi analizować sformatowanego tekstu z konsoli, ponieważ kolejne polecenia otrzymują właściwości obiektu. Przykładowo listę nazw baz można uzyskać przez Get-SqlDatabase -ServerInstance "localhost" | Select-Object -ExpandProperty Name, a wynik można zapisać do pliku CSV poleceniem Export-Csv. Sortowanie według nazwy wykonuje się przez Sort-Object Name, natomiast czytelny podgląd można przygotować za pomocą Format-Table Name, Status, Size. Formatowanie powinno być wykonywane na końcu potoku, ponieważ polecenia formatujące przeznaczone są głównie do prezentacji, a nie do dalszego przetwarzania danych.

Cmdlet korzysta z mechanizmów SQL Server Management Objects, dlatego wynik może zawierać nie tylko proste wartości, lecz także właściwości obliczane lub pobierane dopiero przy odwołaniu do obiektu. Z tego powodu odczyt dużej liczby właściwości może powodować dodatkowe operacje komunikacyjne z serwerem. Przy diagnostyce warto najpierw określić potrzebne pola poleceniem Select-Object, a następnie sprawdzić, czy wartości są dostępne i aktualne. Jeżeli polecenie zwraca błąd połączenia, należy rozdzielić problem z rozwiązywaniem nazwy instancji, uwierzytelnianiem, protokołem komunikacyjnym, zaporą sieciową i uprawnieniami od problemu dotyczącego samej bazy.

Interpretacja wyników i granice zastosowania

Get-SqlDatabase pomaga ustalić, czy wskazana baza jest widoczna z określonego konta i czy jej podstawowe metadane mogą zostać odczytane. Brak bazy w wyniku nie musi oznaczać jej fizycznego usunięcia. Przyczyną może być niewłaściwa instancja, literówka w nazwie, połączenie z innym komputerem, brak uprawnień do metadanych albo stan, w którym baza nie jest dostępna w oczekiwany sposób. Z kolei sam obiekt zwrócony przez cmdlet nie jest pełnym dowodem poprawności aplikacji korzystającej z bazy. Dalsza weryfikacja może wymagać sprawdzenia połączenia, stanu plików bazy, dzienników SQL Server i rzeczywistego działania aplikacji.

Przed użyciem komendy należy upewnić się, że moduł SqlServer jest zainstalowany i załadowany w bieżącej sesji PowerShell. Pomocne mogą być polecenia Get-Module -ListAvailable SqlServer oraz Import-Module SqlServer. Warto również jawnie podać instancję zamiast polegać na domyślnym kontekście środowiska. W przypadku diagnostyki środowiska bazodanowego należy zachować zgodność między nazwą serwera, nazwą instancji, sposobem uwierzytelniania i kontem wykonującym polecenie. Sama komenda odczytuje informacje o obiekcie SQL Server, ale nie zastępuje procedur administracyjnych dotyczących kopii zapasowych, odzyskiwania ani zmiany konfiguracji.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę