Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server- - Linux
In dit artikel maakt u kennis met SQL Server PowerShell en doorloopt u een aantal voorbeelden over het gebruik ervan met PowerShell in macOS en Linux. PowerShell is nu een opensource-project op GitHub.
Voor meer informatie over Windows PowerShell, zie Wat is Windows PowerShell?
Opties voor platformoverschrijdende editor
Alle volgende stappen voor PowerShell 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 installeren
Zie de volgende artikelen voor meer informatie over het installeren van PowerShell op verschillende ondersteunde en experimentele platforms:
- PowerShell installeren in Windows
- PowerShell installeren in Linux
- PowerShell installeren in macOS
- PowerShell installeren op ARM-processors
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-sessie en voert u de volgende code uit:
Install-Module -Name SqlServer
Zie De SQL Server PowerShell-module installeren voor 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. Als u macOS of Linux gebruikt, opent u een terminalsessie op uw computer en typt u pwsh, om een nieuwe PowerShell-sessie te starten. In Windows gebruikt u Win+R en typt pwsh u om een nieuwe PowerShell-sessie te starten.
pwsh
SQL Server biedt een PowerShell-module met de naam SqlServer. U kunt de SqlServer module 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 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
Get-SqlInstancecmdlet om verbinding te maken met deServeren 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. Hiervoor gebruikt u 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 aangemaakt door de cmdlet Get-PSDrive uit te voeren.
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 SQL Server Management Studio (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 gebruikt om foutenlogboeken te onderzoeken en verbinding te maken met uw SQL Server-exemplaar op 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:
- Een dialoogvenster weergeven waarin u wordt gevraagd om de hostnaam of het IP-adres op te geven 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
Get-SqlErrorLogcmdlet om verbinding te maken met het SQL Server-exemplaar in Linux en foutenlogboeken op te halen sindsYesterday
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
Hoewel de SqlServer-module momenteel 109 cmdlets beschikbaar heeft in Windows PowerShell, zijn er slechts 62 van de 109 beschikbaar in PowerShell. 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-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-SqlBeschikbaarheidsGroepListener
- 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
- Verwijder-SqlLogin
- Get-SqlLogin
- Set-SqlSmartAdmin
- Get-SqlSmartAdmin
- Read-SqlTableData
- Write-SqlTableData
- Read-SqlViewData
- Read-SqlXEvent
- Convert-UrnToPath