Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server – Linux
Dieser Artikel führt SQL Server PowerShell ein und führt Sie durch ein paar Beispiele zur Verwendung mit PowerShell unter macOS und Linux. PowerShell ist jetzt ein Open Source-Projekt auf GitHub.
Weitere Informationen zu Windows PowerShell finden Sie unter Was ist Windows PowerShell?
Plattformübergreifende Editor-Optionen
Alle folgenden Schritte für PowerShell funktionieren in einem regulären Terminal, oder Sie können sie über ein Terminal in Visual Studio Code oder Azure Data Studio ausführen. Sowohl VS Code als auch Azure Data Studio sind unter macOS und Linux verfügbar. Weitere Informationen zu Azure Data Studio finden Sie in Schnellstart: Verwenden von Azure Data Studio zum Verbinden und Abfragen von SQL Server. Vielleicht möchten Sie auch den PowerShell Editor Support für Azure Data Studio in Betracht ziehen.
Installieren von PowerShell
Weitere Informationen zum Installieren von PowerShell auf verschiedenen unterstützten und experimentellen Plattformen finden Sie in den folgenden Artikeln:
- Installieren von PowerShell unter Windows
- Installieren von PowerShell unter Linux
- Installieren von PowerShell unter macOS
- Installieren von PowerShell auf ARM-Prozessoren
Installieren des SqlServer-Moduls
Das SqlServer-Modul wird im PowerShell-Katalog verwaltet. Beim Arbeiten mit SQL Server sollten Sie immer die neueste Version des SqlServer PowerShell-Moduls verwenden.
Um das SqlServer Modul zu installieren, öffnen Sie eine PowerShell-Sitzung, und führen Sie den folgenden Code aus:
Install-Module -Name SqlServer
Weitere Informationen zum Installieren des SqlServer Moduls aus dem PowerShell-Katalog finden Sie unter Installieren des SQL Server PowerShell-Moduls.
Verwenden des SqlServer-Moduls
Beginnen wir mit dem Starten von PowerShell. Wenn Sie macOS oder Linux verwenden, öffnen Sie eine Terminalsitzung auf Ihrem Computer, und geben Sie ein pwsh , um eine neue PowerShell-Sitzung zu starten. Verwenden Sie unter Windows Win+R, und geben Sie ein pwsh , um eine neue PowerShell-Sitzung zu starten.
pwsh
SQL Server bietet ein PowerShell-Modul mit dem Namen SqlServer an. Sie können das SqlServer Modul verwenden, um die SQL Server-Komponenten (SQL Server-Anbieter und Cmdlets) in eine PowerShell-Umgebung oder ein Skript zu importieren.
Kopieren Sie den folgenden Befehl an der PowerShell-Eingabeaufforderung, und fügen Sie ihn ein, um das SqlServer Modul in Ihre aktuelle PowerShell-Sitzung zu importieren:
Import-Module SqlServer
Geben Sie den folgenden Befehl an der PowerShell-Eingabeaufforderung ein, um zu überprüfen, ob das SqlServer Modul ordnungsgemäß importiert wurde:
Get-Module -Name SqlServer
PowerShell sollte Informationen ähnlich der folgenden Ausgabe anzeigen:
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 21.1.18102 SqlServer {Add-SqlAvailabilityDatabase, Add-SqlAvailabilityGroupList...
Herstellen einer Verbindung mit SQL Server und Abrufen von Serverinformationen
Die folgenden Schritte verwenden PowerShell, um eine Verbindung mit Ihrer SQL Server-Instanz unter Linux herzustellen und einige Servereigenschaften anzuzeigen.
Kopieren Sie die folgenden Befehle in die PowerShell-Eingabeaufforderung. Wenn Sie diese Befehle ausführen, führt PowerShell Folgendes aus:
- Ein Dialogfeld wird angezeigt, das Sie auffordert, den Hostnamen oder die IP-Adresse Ihrer Instanz einzugeben.
- Das Dialogfeld Bei PowerShell anmelden wird angezeigt, das Sie auffordert, die Anmeldeinformationen einzugeben. Sie können Ihren SQL-Benutzernamen und Ihr SQL-Kennwort verwenden, um eine Verbindung mit Ihrer SQL Server-Instanz unter Linux herzustellen.
- Verwenden des
Get-SqlInstanceCmdlets zum Herstellen einer Verbindung mit denServerund Anzeigen einiger Eigenschaften
Optional können Sie einfach die $serverInstance-Variable durch die IP-Adresse oder den Hostnamen Ihrer SQL Server-Instanz ersetzen.
# 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
PowerShell sollte Informationen ähnlich der folgenden Ausgabe anzeigen:
Instance Name Version ProductLevel UpdateLevel HostPlatform HostDistribution
------------- ------- ------------ ----------- ------------ ----------------
your_server_instance 14.0.3048 RTM CU13 Linux Ubuntu
Hinweis
Wenn für diese Werte nichts angezeigt wird, ist beim Herstellen einer Verbindung mit der SQL Server-Zielinstanz höchstwahrscheinlich ein Fehler aufgetreten. Stellen Sie sicher, dass Sie dieselben Verbindungsinformationen verwenden können, um eine Verbindung über SQL Server Management Studio herzustellen. Überprüfen Sie anschließend die Empfehlungen zur Verbindungsproblembehandlung.
Verwenden des SQL Server PowerShell-Anbieters
Die Verwendung des SQL Server PowerShell-Anbieters ist eine weitere Option zum Herstellen einer Verbindung mit Ihrer SQL Server-Instanz. Dieser Anbieter ermöglicht Ihnen die Navigation Ihrer SQL Server-Instanz über die Befehlszeile, so als würden Sie in der Struktur im Objekt-Explorer navigieren. Dieser Anbieter wird standardmäßig als PSDrive (PowerShell-Laufwerk) namens SQLSERVER:\ dargestellt, über welches Sie SQL Server-Instanzen, auf die Ihr Domänenkonto zugreifen kann, mit & verbinden und durchsuchen können. Informationen zum Einrichten der Active Directory-Authentifizierung für SQL Server für Linux finden Sie in den Konfigurationsschritten.
Für den SQL Server PowerShell-Anbieter können Sie auch die SQL-Authentifizierung verwenden. Verwenden Sie dazu das New-PSDrive Cmdlet, um ein neues PSDrive zu erstellen, und geben Sie die richtigen Anmeldeinformationen für die Verbindung an.
Das folgende Beispiel zeigt, wie Sie unter Verwendung der SQL-Authentifizierung ein neues PSDrive erstellen.
# 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
Sie können überprüfen, ob das Laufwerk erstellt wurde, indem Sie das Cmdlet Get-PSDrive ausführen.
Get-PSDrive
Sobald Sie das neue PSDrive erstellt haben, können Sie damit beginnen, darin zu navigieren.
dir SQLonDocker:\Databases
Nachstehend ist eine Beispielausgabe aufgeführt. Möglicherweise stellen Sie fest, dass diese Ausgabe dem entspricht, was SQL Server Management Studio (SSMS) auf dem Knoten "Databases" anzeigt. Es werden die Benutzerdatenbanken angezeigt, aber nicht die Systemdatenbanken.
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
Wenn Sie alle Datenbanken in Ihrer Instanz anzeigen müssen, bietet sich beispielsweise das Cmdlet Get-SqlDatabase an.
Abrufen von Datenbanken
Ein wichtiges Cmdlet, das Sie kennen müssen, ist Get-SqlDatabase. Bei vielen Vorgängen, die eine Datenbank oder Objekte in einer Datenbank einbeziehen, kann das Cmdlet Get-SqlDatabase verwendet werden. Wenn Sie Werte für den -ServerInstance-Parameter und den -Database-Parameter angeben, wird nur dieses Datenbankobjekt abgerufen. Wenn Sie jedoch nur den -ServerInstance-Parameter angeben, wird eine vollständige Liste aller Datenbanken in dieser Instanz zurückgegeben.
# 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
Hier ist ein Beispiel dafür, was der Befehl Get-SqlDatabase zurückgibt:
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
Untersuchen von SQL Server-Fehlerprotokollen
Die folgenden Schritte verwenden PowerShell, um Fehlerprotokolle auf Ihrer SQL Server-Instanz unter Linux zu untersuchen.
Kopieren Sie die folgenden Befehle in die PowerShell-Eingabeaufforderung. Die Ausführung dieser Befehle kann einige Minuten dauern. Diese Befehle bewirken Folgendes:
- Ein Dialogfeld wird angezeigt, das Sie auffordert, den Hostnamen oder die IP-Adresse Ihrer Instanz einzugeben.
- Das Dialogfeld Bei PowerShell anmelden wird angezeigt, das Sie auffordert, die Anmeldeinformationen einzugeben. Sie können Ihren SQL-Benutzernamen und Ihr SQL-Kennwort verwenden, um eine Verbindung mit Ihrer SQL Server-Instanz unter Linux herzustellen.
- Verwenden Sie das
Get-SqlErrorLogCmdlet, um eine Verbindung mit der SQL Server-Instanz unter Linux herzustellen und Fehlerprotokolle seitYesterdayabzurufen.
Alternativ dazu können Sie die $serverInstance-Variable durch die IP-Adresse oder den Hostnamen Ihrer SQL Server-Instanz ersetzen.
# 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
Erkunden Sie Cmdlets, die derzeit in PowerShell verfügbar sind
Während das SqlServer-Modul derzeit über 109 Cmdlets in Windows PowerShell verfügt, sind nur 62 der 109 in PowerShell verfügbar. Unten finden Sie eine vollständige Liste der derzeit verfügbaren 62 Cmdlets. Eine ausführliche Dokumentation aller Cmdlets im SqlServer-Modul finden Sie in der Cmdlet-Referenz zu SqlServer.
Der folgende Befehl zeigt alle Cmdlets an, die in der von Ihnen verwendeten PowerShell-Version verfügbar sind.
Get-Command -Module SqlServer -CommandType Cmdlet |
Sort-Object -Property Noun |
Select-Object 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