Hantera SQL Server i Linux med PowerShell Core
gäller för:SQL Server – Linux
Den här artikeln beskriver SQL Server PowerShell- och beskriver några exempel på hur du använder den med PowerShell Core (PS Core) på macOS & Linux. PowerShell Core är nu ett projekt med öppen källkod på GitHub.
Alternativ för plattformsoberoende redigeringsprogram
Alla följande steg för PowerShell Core fungerar i en vanlig terminal, eller så kan du köra dem från en terminal i Visual Studio Code eller Azure Data Studio. Både VS Code och Azure Data Studio är tillgängliga i macOS och Linux. Mer information om Azure Data Studio finns i Snabbstart: Använda Azure Data Studio för att ansluta och fråga SQL Server. Du kanske också vill överväga att använda PowerShell-redigerarstöd för Azure Data Studio.
Installera PowerShell Core
Mer information om hur du installerar PowerShell Core på olika plattformar som stöds och experimentella plattformar finns i följande artiklar:
- Installera PowerShell Core i Windows
- Installera PowerShell Core på Linux
- Installera PowerShell Core på macOS-
- Installera PowerShell Core på ARM
Installera SqlServer-modulen
Modulen SqlServer
underhålls i PowerShell-galleriet. När du arbetar med SQL Server bör du alltid använda den senaste versionen av SqlServer PowerShell-modulen.
Om du vill installera SqlServer-modulen öppnar du en PowerShell Core-session och kör följande kod:
Install-Module -Name SqlServer
Mer information om hur du installerar SqlServer-modulen från PowerShell-galleriet finns i Installera SQL Server PowerShell-modulen.
Använda SqlServer-modulen
Vi börjar med att starta PowerShell Core. Om du använder macOS eller Linux öppnar du en terminalsession på datorn och skriver pwsh
för att starta en ny PowerShell Core-session. I Windows använder du Win+Roch skriver pwsh
för att starta en ny PowerShell Core-session.
pwsh
SQL Server tillhandahåller en PowerShell-modul med namnet SqlServer. Du kan använda modulen SqlServer för att importera SQL Server-komponenterna (SQL Server-providern och cmdletarna) till en PowerShell-miljö eller ett PowerShell-skript.
Kopiera och klistra in följande kommando i PowerShell-prompten för att importera modulen SqlServer till din aktuella PowerShell-session:
Import-Module SqlServer
Skriv följande kommando i PowerShell-prompten för att kontrollera att modulen SqlServer importerades korrekt:
Get-Module -Name SqlServer
PowerShell bör visa information som liknar följande utdata:
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 21.1.18102 SqlServer {Add-SqlAvailabilityDatabase, Add-SqlAvailabilityGroupList...
Ansluta till SQL Server och hämta serverinformation
Följande steg använder PowerShell Core för att ansluta till din SQL Server-instans i Linux och visa ett par serveregenskaper.
Kopiera och klistra in följande kommandon i PowerShell-prompten. När du kör de här kommandona gör PowerShell följande:
- Visa en dialogruta som uppmanar dig att ange värdnamnet eller IP-adressen för din instans
- Visa dialogrutan PowerShell-begäran om autentiseringsuppgifter, som uppmanar dig att ange autentiseringsuppgifterna. Du kan använda ditt SQL-användarnamn och SQL-lösenord för att ansluta till SQL Server-instansen i Linux
- Använd cmdleten Get-SqlInstance för att ansluta till Server- och visa några egenskaper
Du kan också ersätta variabeln $serverInstance
med IP-adressen eller värdnamnet för SQL Server-instansen.
# 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 bör visa information som liknar följande utdata:
Instance Name Version ProductLevel UpdateLevel HostPlatform HostDistribution
------------- ------- ------------ ----------- ------------ ----------------
your_server_instance 14.0.3048 RTM CU13 Linux Ubuntu
Not
Om inget visas för dessa värden misslyckades troligen anslutningen till SQL Server-målinstansen. Kontrollera att du kan använda samma anslutningsinformation för att ansluta från SQL Server Management Studio. Granska sedan felsökningsrekommendationerna för anslutning.
Använda SQL Server PowerShell-providern
Ett annat alternativ för att ansluta till SQL Server-instansen är att använda SQL Server PowerShell-providern. Med providern kan du navigera i SQL Server-instansen på liknande sätt som om du navigerade i trädstrukturen i Object Explorer, men på cmdline. Som standard visas den här providern som en PSDrive med namnet SQLSERVER:\
, som du kan använda för att ansluta & navigera i SQL Server-instanser som ditt domänkonto har åtkomst till. Mer information om hur du konfigurerar Active Directory-autentisering för SQL Server i Linux finns i Konfigurationssteg.
Du kan också använda SQL-autentisering med SQL Server PowerShell-providern. Det gör du genom att använda cmdleten New-PSDrive
för att skapa en ny PSDrive och ange rätt autentiseringsuppgifter för att ansluta.
I följande exempel visas ett exempel på hur du skapar en ny PSDrive med SQL-autentisering.
# 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
Du kan bekräfta att disken skapades genom att köra cmdlet Get-PSDrive
.
Get-PSDrive
När du har skapat din nya PSDrive kan du börja navigera i den.
dir SQLonDocker:\Databases
Så här kan utdata se ut. Du kanske märker att dessa utdata liknar vad SSMS visar på noden Databaser. Den visar användardatabaserna, men inte systemdatabaserna.
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
Om du behöver se alla databaser på din instans är ett alternativ att använda cmdleten Get-SqlDatabase
.
Hämta databaser
En viktig cmdlet att känna till är Get-SqlDatabase
. För många åtgärder som omfattar en databas eller objekt i en databas kan Get-SqlDatabase
cmdlet användas. Om du anger värden för både parametrarna -ServerInstance
och -Database
hämtas bara ett databasobjekt. Men om du bara anger parametern -ServerInstance
returneras en fullständig lista över alla databaser på den instansen.
# 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
Här är ett exempel på vad kommandot Get-SqlDatabase returnerar:
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
Granska SQL Server-felloggar
Följande steg använder PowerShell Core för att undersöka felloggar gällande anslutningen till din SQL Server-instans på Linux.
Kopiera och klistra in följande kommandon i PowerShell-prompten. Det kan ta några minuter att köra programmen. Dessa kommandon utför följande steg:
- Visa en dialogruta som uppmanar dig att ange värdnamnet eller IP-adressen för din instans
- Visa PowerShell-begäran om autentiseringsuppgifter dialogruta där du uppmanas att ange autentiseringsuppgifterna. Du kan använda ditt SQL-användarnamn och SQL-lösenord för att ansluta till SQL Server-instansen i Linux
- Använd cmdleten Get-SqlErrorLog för att ansluta till SQL Server-instansen i Linux och hämta felloggar sedan Igår
Du kan också ersätta variabeln $serverInstance
med IP-adressen eller värdnamnet för SQL Server-instansen.
# 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
Utforska cmdletar som för närvarande är tillgängliga i PowerShell Core
SqlServer-modulen har för närvarande 109 cmdletar tillgängliga i Windows PowerShell, men endast 62 av 109 är tillgängliga i PSCore. Följande är en fullständig lista över de 62 cmdlets som för närvarande är tillgängliga. Detaljerad dokumentation om alla cmdletar i SqlServer-modulen finns i referensen för SqlServer -cmdleten.
Följande kommando visar alla cmdletar som är tillgängliga för den version av PowerShell som du använder.
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