Zarządzanie programem SQL Server w systemie Linux przy użyciu programu PowerShell Core
Dotyczy:programu SQL Server — Linux
W tym artykule przedstawiono programu SQL Server PowerShell i przedstawiono kilka przykładów dotyczących używania go z programem PowerShell Core (PS Core) w systemie macOS & Linux. Program PowerShell Core to teraz projekt open source w witrynie GitHub.
Opcje edytora międzyplatformowego
Wszystkie poniższe kroki dla programu PowerShell Core działają w zwykłym terminalu lub można uruchomić je z poziomu terminalu w programie Visual Studio Code lub Azure Data Studio. Programy VS Code i Azure Data Studio są dostępne w systemach macOS i Linux. Aby uzyskać więcej informacji na temat narzędzia Azure Data Studio, zobacz Szybki start: nawiązywanie połączenia z programem SQL Serveri wykonywanie zapytań względem niego za pomocą narzędzia Azure Data Studio. Warto również rozważyć użycie obsługi edytora PowerShell dla programu Azure Data Studio.
Instalowanie programu PowerShell Core
Aby uzyskać więcej informacji na temat instalowania programu PowerShell Core na różnych obsługiwanych i eksperymentalnych platformach, zobacz następujące artykuły:
- Instalowanie programu PowerShell Core w systemie Windows
- instalowanie programu PowerShell Core w systemie Linux
- Instalowanie programu PowerShell Core w systemie macOS
- Instalowanie programu PowerShell Core na ARM
Instalowanie modułu SqlServer
Moduł SqlServer
jest utrzymywany w Galerii programu PowerShell. Podczas pracy z programem SQL Server zawsze należy używać najnowszej wersji modułu SqlServer PowerShell.
Aby zainstalować moduł SqlServer, otwórz sesję programu PowerShell Core i uruchom następujący kod:
Install-Module -Name SqlServer
Aby uzyskać więcej informacji na temat sposobu instalowania modułu SqlServer z galerii programu PowerShell, zobacz Install the SQL Server PowerShell module.
Korzystanie z modułu SqlServer
Zacznijmy od uruchomienia programu PowerShell Core. Jeśli korzystasz z systemu macOS lub Linux, otwórz sesję terminalu na komputerze i wpisz pwsh
, aby uruchomić nową sesję programu PowerShell Core. W systemie Windows użyj Win+Ri wpisz pwsh
, aby uruchomić nową sesję programu PowerShell Core.
pwsh
Program SQL Server udostępnia moduł programu PowerShell o nazwie SqlServer. Możesz użyć modułu SqlServer w celu zaimportowania składników programu SQL Server (dostawcy i poleceń cmdlet programu SQL Server) do środowiska lub skryptu programu PowerShell.
Skopiuj i wklej następujące polecenie w wierszu polecenia programu PowerShell, aby zaimportować moduł SqlServer do bieżącej sesji programu PowerShell:
Import-Module SqlServer
Wpisz następujące polecenie w wierszu polecenia programu PowerShell, aby sprawdzić, czy moduł SqlServer został zaimportowany poprawnie:
Get-Module -Name SqlServer
Program PowerShell powinien wyświetlać informacje podobne do następujących danych wyjściowych:
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 21.1.18102 SqlServer {Add-SqlAvailabilityDatabase, Add-SqlAvailabilityGroupList...
Nawiązywanie połączenia z programem SQL Server i uzyskiwanie informacji o serwerze
W poniższych krokach użyj programu PowerShell Core, aby nawiązać połączenie z wystąpieniem programu SQL Server w systemie Linux i wyświetlić kilka właściwości serwera.
Skopiuj i wklej następujące polecenia w wierszu polecenia programu PowerShell. Po uruchomieniu tych poleceń program PowerShell wykona następujące czynności:
- Wyświetlanie okna dialogowego z monitem o podanie nazwy hosta lub adresu IP wystąpienia
- Wyświetl okno dialogowe żądania poświadczeń programu PowerShell, które wyświetli monit o podanie poświadczeń. Aby nawiązać połączenie z wystąpieniem programu SQL Server w systemie Linux, możesz użyć nazwy użytkownika SQL i hasła SQL
- Użyj polecenia cmdlet Get-SqlInstance, aby nawiązać połączenie z Server i wyświetlić kilka właściwości
Opcjonalnie możesz zastąpić zmienną $serverInstance
adresem IP lub nazwą hosta wystąpienia programu SQL Server.
# Prompt for instance & credentials to login into SQL Server
$serverInstance = Read-Host "Enter the name of your instance"
$credential = Get-Credential
# Connect to the Server and return a few properties
Get-SqlInstance -ServerInstance $serverInstance -Credential $credential
# done
Program PowerShell powinien wyświetlać informacje podobne do następujących danych wyjściowych:
Instance Name Version ProductLevel UpdateLevel HostPlatform HostDistribution
------------- ------- ------------ ----------- ------------ ----------------
your_server_instance 14.0.3048 RTM CU13 Linux Ubuntu
Notatka
Jeśli nic nie jest wyświetlane dla tych wartości, najprawdopodobniej nie udało się połączyć z docelowym wystąpieniem SQL Server. Upewnij się, że do nawiązania połączenia z programu SQL Server Management Studio możesz użyć tych samych informacji o połączeniu. Następnie zapoznaj się z zaleceniami dotyczącymi rozwiązywania problemów z połączeniem .
Korzystanie z dostawcy PowerShell dla programu SQL Server
Inną opcją nawiązywania połączenia z wystąpieniem programu SQL Server jest użycie dostawcy programu SQL Server PowerShell. Użycie dostawcy pozwala na nawigację po instancji SQL Server podobnie jak podczas nawigacji po strukturze drzewa w Eksploratorze obiektów, jednak w środowisku wiersza poleceń. Domyślnie ten dostawca jest przedstawiany jako PSDrive o nazwie SQLSERVER:\
, którego można użyć do łączenia się z & i nawigowania po wystąpieniach programu SQL Server, do których twoje konto domeny ma dostęp. Aby uzyskać informacje na temat konfigurowania uwierzytelniania usługi Active Directory dla programu SQL Server w systemie Linux, zobacz Kroki konfiguracji.
Można również użyć uwierzytelniania SQL z dostawcą PowerShell dla SQL Server. W tym celu użyj polecenia cmdlet New-PSDrive
, aby utworzyć nową usługę PSDrive i podać odpowiednie poświadczenia do nawiązania połączenia.
W poniższym przykładzie przedstawiono przykład tworzenia nowej usługi PSDrive przy użyciu uwierzytelniania SQL.
# NOTE: We are reusing the values saved in the $credential variable from the above example.
New-PSDrive -Name SQLonDocker -PSProvider SqlServer -Root 'SQLSERVER:\SQL\localhost,10002\Default\' -Credential $credential
Możesz potwierdzić, że dysk został utworzony, uruchamiając polecenie cmdlet o nazwie Get-PSDrive
.
Get-PSDrive
Po utworzeniu nowej usługi PSDrive możesz rozpocząć nawigowanie po niej.
dir SQLonDocker:\Databases
Oto jak mogą wyglądać dane wyjściowe. Możesz zauważyć, że ten rezultat jest podobny do tego, co jest wyświetlane w węźle Bazy danych w SQL Server Management Studio (SSMS). Wyświetla on bazy danych użytkowników, ale nie systemowe bazy danych.
Name Status Size Space Recovery Compat. Owner
Available Model Level
---- ------ ---- ---------- -------- ------- -----
AdventureWorks2022 Normal 209.63 MB 1.31 MB Simple 130 sa
AdventureWorksDW2022 Normal 167.00 MB 32.47 MB Simple 110 sa
AdventureWorksDW2022 Normal 188.00 MB 78.10 MB Simple 120 sa
AdventureWorksDW2022 Normal 172.00 MB 74.76 MB Simple 130 sa
AdventureWorksDW2022 Normal 208.00 MB 40.57 MB Simple 140 sa
Jeśli potrzebujesz wyświetlić wszystkie bazy danych w wystąpieniu, jedną z opcji jest użycie polecenia cmdlet Get-SqlDatabase
.
Pobieranie baz danych
Ważne polecenie cmdlet do poznania to Get-SqlDatabase
. W przypadku wielu operacji obejmujących bazę danych lub obiekty w bazie danych można użyć polecenia cmdlet Get-SqlDatabase
. Jeśli podasz wartości zarówno dla parametrów -ServerInstance
, jak i -Database
, pobierany jest tylko jeden obiekt bazy danych. Jeśli jednak określisz tylko parametr -ServerInstance
, zostanie zwrócona pełna lista wszystkich baz danych w tym wystąpieniu.
# NOTE: We are reusing the values saved in the $credential variable from the above example.
# Connect to the Instance and retrieve all databases
Get-SqlDatabase -ServerInstance ServerB -Credential $credential
Oto przykład tego, co zwraca polecenie Get-SqlDatabase:
Name Status Size Space Recovery Compat. Owner
Available Model Level
---- ------ ---- ---------- -------- ------- -----
AdventureWorks2022 Normal 209.63 MB 1.31 MB Simple 130 sa
AdventureWorksDW2022 Normal 167.00 MB 32.47 MB Simple 110 sa
AdventureWorksDW2022 Normal 188.00 MB 78.10 MB Simple 120 sa
AdventureWorksDW2022 Normal 172.00 MB 74.88 MB Simple 130 sa
AdventureWorksDW2022 Normal 208.00 MB 40.63 MB Simple 140 sa
master Normal 6.00 MB 600.00 KB Simple 140 sa
model Normal 16.00 MB 5.70 MB Full 140 sa
msdb Normal 15.50 MB 1.14 MB Simple 140 sa
tempdb Normal 16.00 MB 5.49 MB Simple 140 sa
Sprawdzanie dzienników błędów programu SQL Server
Użyj programu PowerShell Core w poniższych krokach, aby przeanalizować dzienniki błędów na wystąpieniu programu SQL Server w systemie Linux.
Skopiuj i wklej następujące polecenia w wierszu polecenia programu PowerShell. Ich uruchomienie może potrwać kilka minut. Te polecenia wykonują następujące czynności:
- Wyświetlanie okna dialogowego z monitem o podanie nazwy hosta lub adresu IP wystąpienia
- Wyświetl okno dialogowe żądania poświadczeń programu PowerShell , które prosi o podanie poświadczeń. Aby nawiązać połączenie z wystąpieniem programu SQL Server w systemie Linux, możesz użyć nazwy użytkownika SQL i hasła SQL.
- Użyj polecenia cmdlet Get-SqlErrorLog, aby nawiązać połączenie z wystąpieniem programu SQL Server w systemie Linux i pobrać dzienniki błędów od wczoraj
Opcjonalnie możesz zastąpić zmienną $serverInstance
adresem IP lub nazwą hosta wystąpienia programu SQL Server.
# Prompt for instance & credentials to login into SQL Server
$serverInstance = Read-Host "Enter the name of your instance"
$credential = Get-Credential
# Retrieve error logs since yesterday
Get-SqlErrorLog -ServerInstance $serverInstance -Credential $credential -Since Yesterday
# done
Eksplorowanie poleceń cmdlet dostępnych obecnie w programie PowerShell Core
Moduł SqlServer ma obecnie 109 poleceń cmdlet dostępnych w programie Windows PowerShell, ale tylko 62 z 109 jest dostępnych w programie PSCore. Poniżej znajduje się pełna lista 62 obecnie dostępnych poleceń cmdlet. Aby uzyskać szczegółową dokumentację wszystkich poleceń cmdlet w module SqlServer, zobacz dokumentację poleceń cmdlet programu SqlServer .
Poniższe polecenie pokazuje wszystkie polecenia cmdlet dostępne w używanej wersji programu PowerShell.
Get-Command -Module SqlServer -CommandType Cmdlet |
Sort-Object -Property Noun |
SELECT Name
- ConvertFrom-EncodedSqlName
- ConvertTo-EncodedSqlName
- Get-SqlAgent
- Get-SqlAgentJob
- Get-SqlAgentJobHistory
- Get-SqlAgentJobSchedule
- Get-SqlAgentJobStep
- Get-SqlAgentSchedule
- Invoke-SqlAssessment
- Get-SqlAssessmentItem
- Remove-SqlAvailabilityDatabase
- Resume-SqlAvailabilityDatabase
- Add-SqlAvailabilityDatabase
- Suspend-SqlAvailabilityDatabase
- New-SqlAvailabilityGroup
- Set-SqlAvailabilityGroup
- Remove-SqlAvailabilityGroup
- Switch-SqlAvailabilityGroup
- Join-SqlAvailabilityGroup
- Revoke-SqlAvailabilityGroupCreateAnyDatabase
- Grant-SqlAvailabilityGroupCreateAnyDatabase
- New-SqlAvailabilityGroupListener
- Set-SqlAvailabilityGroupListener
- Add-SqlAvailabilityGroupListenerStaticIp
- Set-SqlAvailabilityReplica
- Remove-SqlAvailabilityReplica
- New-SqlAvailabilityReplica
- Set-SqlAvailabilityReplicaRoleToSecondary
- New-SqlBackupEncryptionOption
- Get-SqlBackupHistory
- Invoke-Sqlcmd
- New-SqlCngColumnMasterKeySettings
- Remove-SqlColumnEncryptionKey
- Get-SqlColumnEncryptionKey
- Remove-SqlColumnEncryptionKeyValue
- Add-SqlColumnEncryptionKeyValue
- Get-SqlColumnMasterKey
- Remove-SqlColumnMasterKey
- New-SqlColumnMasterKey
- Get-SqlCredential
- Set-SqlCredential
- New-SqlCredential
- Remove-SqlCredential
- New-SqlCspColumnMasterKeySettings
- Get-SqlDatabase
- Restore-SqlDatabase
- Backup-SqlDatabase
- Set-SqlErrorLog
- Get-SqlErrorLog
- New-SqlHADREndpoint
- Set-SqlHADREndpoint
- Get-SqlInstance
- Add-SqlLogin
- Remove-SqlLogin
- Get-SqlLogin
- Set-SqlSmartAdmin
- Get-SqlSmartAdmin
- Read-SqlTableData
- Write-SqlTableData
- Read-SqlViewData
- Read-SqlXEvent
- Convert-UrnToPath