Udostępnij za pośrednictwem


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 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