SQL Server op Linux beheren met PowerShell Core
van toepassing op:SQL Server- - Linux
In dit artikel maakt u kennis met SQL Server PowerShell- en doorloopt u een aantal voorbeelden van het gebruik ervan met PowerShell Core (PS Core) in macOS & Linux. PowerShell Core is nu een opensource-project op GitHub-.
Opties voor platformoverschrijdende editor
Alle volgende stappen voor PowerShell Core werken in een reguliere terminal of u kunt ze uitvoeren vanuit een terminal in Visual Studio Code of Azure Data Studio. Vs Code en Azure Data Studio zijn beschikbaar in macOS en Linux. Zie Quickstart: Azure Data Studio gebruiken om verbinding te maken en query's uit te voeren op SQL Server-voor meer informatie over Azure Data Studio. U kunt ook overwegen de PowerShell Editor-ondersteuning voor Azure Data Studiote gebruiken.
PowerShell Core installeren
Zie de volgende artikelen voor meer informatie over het installeren van PowerShell Core op verschillende ondersteunde en experimentele platforms:
- PowerShell Core installeren in Windows
- PowerShell Core installeren in Linux
- PowerShell Core installeren op macOS-
- PowerShell Core installeren in ARM-
De SqlServer-module installeren
De SqlServer
-module wordt onderhouden in de PowerShell Gallery-. Wanneer u met SQL Server werkt, moet u altijd de meest recente versie van de SqlServer PowerShell-module gebruiken.
Als u de SqlServer-module wilt installeren, opent u een PowerShell Core-sessie en voert u de volgende code uit:
Install-Module -Name SqlServer
Zie De SQL Server PowerShell-module installerenvoor meer informatie over het installeren van de SqlServer-module vanuit de PowerShell-galerie.
De SqlServer-module gebruiken
Laten we beginnen met het starten van PowerShell Core. Als u macOS of Linux gebruikt, opent u een terminalsessie op uw computer en typt u pwsh
om een nieuwe PowerShell Core-sessie te starten. Gebruik in Windows Win+Ren typ pwsh
om een nieuwe PowerShell Core-sessie te starten.
pwsh
SQL Server biedt een PowerShell-module met de naam SqlServer. U kunt de module SqlServer gebruiken om de SQL Server-onderdelen (SQL Server-provider en cmdlets) te importeren in een PowerShell-omgeving of -script.
Kopieer en plak de volgende opdracht in de PowerShell-prompt om de SqlServer-module te importeren in uw huidige PowerShell-sessie:
Import-Module SqlServer
Typ de volgende opdracht in de PowerShell-prompt om te controleren of de SqlServer--module correct is geïmporteerd:
Get-Module -Name SqlServer
PowerShell moet informatie weergeven die vergelijkbaar is met de volgende uitvoer:
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 21.1.18102 SqlServer {Add-SqlAvailabilityDatabase, Add-SqlAvailabilityGroupList...
Verbinding maken met SQL Server en servergegevens ophalen
In de volgende stappen wordt PowerShell Core gebruikt om verbinding te maken met uw SQL Server-exemplaar in Linux en een aantal servereigenschappen weer te geven.
Kopieer en plak de volgende opdrachten bij de PowerShell-prompt. Wanneer u deze opdrachten uitvoert, doet PowerShell het volgende:
- Een dialoogvenster weergeven waarin u wordt gevraagd om de hostnaam of het IP-adres op te geven van uw exemplaar
- Geef het dialoogvenster PowerShell-referentieaanvraag weer waarin u om de referenties wordt gevraagd. U kunt uw SQL-gebruikersnaam en SQL-wachtwoord gebruiken om verbinding te maken met uw SQL Server-exemplaar in Linux
- Gebruik de cmdlet Get-SqlInstance om verbinding te maken met de Server- en enkele eigenschappen weer te geven
U kunt desgewenst de $serverInstance
variabele vervangen door het IP-adres of de hostnaam van uw SQL Server-exemplaar.
# 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 moet informatie weergeven die vergelijkbaar is met de volgende uitvoer:
Instance Name Version ProductLevel UpdateLevel HostPlatform HostDistribution
------------- ------- ------------ ----------- ------------ ----------------
your_server_instance 14.0.3048 RTM CU13 Linux Ubuntu
Notitie
Als er niets wordt weergegeven voor deze waarden, is de verbinding met het SQL Server-doelexemplaar waarschijnlijk mislukt. Zorg ervoor dat u dezelfde verbindingsgegevens kunt gebruiken om verbinding te maken vanuit SQL Server Management Studio. Bekijk vervolgens de aanbevelingen voor het oplossen van verbindingsproblemen.
De SQL Server PowerShell-provider gebruiken
Een andere optie voor het maken van verbinding met uw SQL Server-exemplaar is het gebruik van de SQL Server PowerShell Provider. Met behulp van de provider kunt u door een SQL Server-exemplaar navigeren, vergelijkbaar met het navigeren door de boomstructuur in Objectverkenner, maar dan op de opdrachtregel. Deze provider wordt standaard weergegeven als een PSDrive met de naam SQLSERVER:\
, waarmee u verbinding kunt maken & door SQL Server-exemplaren kunt navigeren waartoe uw domeinaccount toegang heeft. Zie configuratiestappen voor informatie over het instellen van Active Directory-verificatie voor SQL Server op Linux.
U kunt ook SQL-verificatie gebruiken met de SQL Server PowerShell-provider. Gebruik hiervoor de New-PSDrive
cmdlet om een nieuwe PSDrive te maken en de juiste referenties op te geven om verbinding te maken.
In het volgende voorbeeld ziet u een voorbeeld van het maken van een nieuwe PSDrive met behulp van SQL-verificatie.
# 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
U kunt bevestigen dat het station is gemaakt door het uitvoeren van de Get-PSDrive
cmdlet.
Get-PSDrive
Zodra u uw nieuwe PSDrive hebt gemaakt, kunt u beginnen met navigeren.
dir SQLonDocker:\Databases
Hier ziet u hoe de uitvoer eruit kan zien. Mogelijk ziet u dat deze uitvoer vergelijkbaar is met wat SSMS op het knooppunt Databases weergeeft. De gebruikersdatabases worden weergegeven, maar niet de systeemdatabases.
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
Als u alle databases op uw exemplaar wilt zien, kunt u de cmdlet Get-SqlDatabase
gebruiken.
Databases ophalen
Een belangrijke cmdlet die u moet weten, is de Get-SqlDatabase
. Voor veel bewerkingen die betrekking hebben op een database of objecten in een database, kan de Get-SqlDatabase
cmdlet worden gebruikt. Als u waarden opgeeft voor zowel de parameters -ServerInstance
als -Database
, wordt slechts dat ene databaseobject opgehaald. Als u echter alleen de parameter -ServerInstance
opgeeft, wordt een volledige lijst met alle databases op dat exemplaar geretourneerd.
# 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 volgt een voorbeeld van wat de Get-SqlDatabase opdracht retourneert:
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
Foutenlogboeken van SQL Server onderzoeken
In de volgende stappen wordt PowerShell Core gebruikt om foutenlogboeken te onderzoeken die verbinding maken met uw SQL Server-exemplaar in Linux.
Kopieer en plak de volgende opdrachten bij de PowerShell-prompt. Het kan enkele minuten duren voordat ze zijn afgerond. Met deze opdrachten voert u de volgende stappen uit:
- Toon een dialoogvenster waarin wordt gevraagd om de hostnaam of het IP-adres van uw exemplaar.
- Geef de PowerShell-referentieaanvraag weer dialoogvenster waarin u om de referenties wordt gevraagd. U kunt uw SQL-gebruikersnaam en SQL-wachtwoord gebruiken om verbinding te maken met uw SQL Server-exemplaar in Linux
- Gebruik de cmdlet Get-SqlErrorLog om verbinding te maken met het SQL Server-exemplaar in Linux en foutenlogboeken op te halen sinds Gisteren
U kunt de variabele $serverInstance
desgewenst vervangen door het IP-adres of de hostnaam van uw SQL Server-exemplaar.
# 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
Cmdlets verkennen die momenteel beschikbaar zijn in PowerShell Core
Hoewel de SqlServer-module momenteel 109 cmdlets beschikbaar heeft in Windows PowerShell, zijn er slechts 62 van de 109 beschikbaar in PSCore. Hieronder volgt een volledige lijst met 62 cmdlets die momenteel beschikbaar zijn. Zie voor uitgebreide documentatie over alle cmdlets in de SqlServer-module de naslaginformatie over SqlServer-cmdlets .
In de volgende opdracht ziet u alle cmdlets die beschikbaar zijn in de versie van PowerShell die u gebruikt.
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