Dela via


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 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