dbatools.io = SQL Server Management Studio jako wiersz poleceń - Połącz, Zapytaj, Zapisz
Ten wpis jest częścią serii ukazującej praktyczne przykłady użycia modułu. Główny wpis zawierający odnośniki do pozostałych wpisów serii można znaleźć tutaj: dbatools.io = SQL Server Management Studio jako wiersz poleceń - spis treści.
Połączenie z bazą danych
Z pomocą dbatools mamy możliwość stworzenia obiektu serwera i ponowne jego użycie bez potrzeby podawania danych uwierzytelnienie oraz wieloktornego podłączania do bazy.
Connect-DbaInstance
# ustalamy zmienne
$SqlInstance = "localhost:1433"
$User = "sa"
$PWord = ConvertTo-SecureString -String "<YourStrong@Passw0rd>" -AsPlainText -Force
# tworzymy obiekt uwierzytelnienia
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord
# tworzymy obiekt podłączenia do serwera
$server = Connect-DbaInstance -SqlInstance $SqlInstance -SqlCredential $Credential
# podgląd obiektu serwera
$server
<#
ComputerName Name Product Version HostPlatform IsAzure IsClustered ConnectedAs
------------ ---- ------- ------- ------------ ------- ----------- -----------
localhost localhost,1433 Microsoft SQL Server 14.0.3048 Linux False False sa
#>
Wykonywanie prostego zapytania
Po utworzeniu obiektu serwera możemy wykonać zapytanie.
Invoke-DbaQuery
# ponowne użycie wcześniej utworzonego obiektu serwera
Invoke-DbaQuery -SqlInstance $server -Query "SELECT @@version"
# lub obiektu uwierzytelnienia
Invoke-DbaQuery -SqlInstance "localhost,1433" -SqlCredential $Credential -Query "SELECT @@version"
# w sytuacji, w której korzystamy z uwierzytelnienia Active Directory wystarczy podłączyć się bezpośrednio do serwera
Invoke-DbaQuery -SqlInstance "localhost:1433" -Query "SELECT @@version"
# zapisanie wyników zapytania jako obiekt PowerShell
$output = Invoke-DbaQuery -SqlInstance $server -Query "SELECT @@version"
# oraz ich podgląd w formie tabelarycznej
$output | Out-GridView
Save results as…
Otrzymane wyniki możemy zapisać do pliku, na przykład CSV lub TXT.
Write-DbaDbTableData
# zapisanie wyników w pliku TXT
$output | Out-File -FilePath .\output.txt
# lub w pliku CSV
$output | Export-Csv -Path .\output.csv -NoTypeInformation
# lub do tabeli (za pomocą dbatools)
$output|Write-DbaDbTableData -SqlInstance $server -Table tempdb.dbo.customers -AutoCreateTable
Mam nadzieję, że koncept SQL Server Management Studio jako wiersz poleceń jest teraz bardziej klarowny.
Dziękuję,
Mikey