Delen via


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:

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