Použití PowerShellu v Linuxu ke správě SQL Serveru v Linuxu

Platí pro:SQL Server v Linuxu

Tento článek představuje SQL Server PowerShell a provede vás několika příklady, jak ho používat s PowerShellem v macOS a Linuxu. PowerShell je open source projekt na GitHub.

Další informace o prostředí Windows PowerShell najdete v tématu Co je Windows PowerShell?

Možnosti editoru pro různé platformy

Všechny následující kroky pro PowerShell fungují v běžném terminálu nebo je můžete spustit z terminálu v editoru Visual Studio Code. Visual Studio Code je k dispozici v systémech macOS a Linux. Pro více informací o rozšíření MSSQL viz MSSQL rozšíření pro Visual Studio Code.

Instalace PowerShellu

Další informace o instalaci PowerShellu na různých podporovaných a experimentálních platformách najdete v následujících článcích:

Instalace modulu SqlServer

Modul SqlServer se udržuje v galerii prostředí PowerShell . Při práci s SQL Serverem byste měli vždy používat nejnovější verzi SqlServer modulu PowerShell.

Pokud chcete nainstalovat SqlServer modul, otevřete relaci PowerShellu a spusťte následující kód:

Install-Module -Name SqlServer

Další informace o tom, jak nainstalovat SqlServer modul z Galerie prostředí PowerShell, najdete v tématu Instalace modulu SQL Server PowerShell.

Použití modulu SqlServer

Začněme spuštěním PowerShellu. Pokud jste na macOS nebo Linuxu, otevřete terminálovou relaci na počítači a napište pwsh pro spuštění nové PowerShell relace. Ve Windows stiskněte Win+R a zadejte pwsh, abyste spustili novou relaci PowerShellu.

pwsh

SQL Server poskytuje modul PowerShellu s názvem SqlServer. Modul SqlServer můžete použít k importu komponent SQL Serveru (zprostředkovatele a rutin SQL Serveru) do prostředí Nebo skriptu PowerShellu.

Zkopírujte a vložte následující příkaz na příkazový řádek PowerShellu, abyste importovali modul SqlServer do vaší aktuální relace PowerShellu:

Import-Module SqlServer

Zadáním následujícího příkazu na příkazovém řádku PowerShellu ověřte, že SqlServer se modul naimportoval správně:

Get-Module -Name SqlServer

PowerShell by měl zobrazit informace podobné následujícímu výstupu:

ModuleType Version    Name          ExportedCommands
---------- -------    ----          ----------------
Script     21.1.18102 SqlServer     {Add-SqlAvailabilityDatabase, Add-SqlAvailabilityGroupList...

Připojení k SQL Serveru a získání informací o serveru

Následující kroky používají PowerShell pro připojení k instanci SQL Serveru v Linuxu a zobrazení několika vlastností serveru.

Na příkazovém řádku PowerShellu zkopírujte a vložte následující příkazy. Když spustíte tyto příkazy, PowerShell:

  • Zobrazení dialogového okna s výzvou k zadání názvu hostitele nebo IP adresy vaší instance
  • Zobrazí se dialogové okno pro zadání přihlašovacích údajů PowerShellu, které vás vyzve k jejich zadání. K připojení k instanci SQL Serveru v Linuxu můžete použít uživatelské jméno SQL a heslo SQL.
  • Použití rutiny Get-SqlInstance pro připojení k Server a zobrazení několika vlastností

Volitelně můžete proměnnou $serverInstance nahradit IP adresou nebo názvem hostitele vaší instance SQL Serveru.

# Prompt for instance and credentials to connect to 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 by měl zobrazit informace podobné následujícímu výstupu:

Instance Name                   Version    ProductLevel UpdateLevel  HostPlatform HostDistribution
-------------                   -------    ------------ -----------  ------------ ----------------
your_server_instance            14.0.3048  RTM          CU13         Linux        Ubuntu

Poznámka

Pokud se pro tyto hodnoty nezobrazí nic, připojení k cílové instanci SQL Serveru s největší pravděpodobností selhalo. Ujistěte se, že pro připojení z aplikace SQL Server Management Studio můžete použít stejné informace o připojení. Pak si projděte doporučení pro řešení potíží s připojením .

Použití zprostředkovatele PowerShellu pro SQL Server

Další možností připojení k instanci SQL Serveru je použití poskytovatele SQL Server PowerShell. Poskytovatel vám umožňuje navigovat instanci SQL Server, jako byste procházeli stromovou strukturou v Průzkumník objektů, ale přímo v příkazovém řádku. Ve výchozím nastavení je tento poskytovatel prezentován jako PSDrive s názvem SQLSERVER:\, který můžete použít k připojení a navigaci v instancích SQL Server, ke kterým má přístup váš doménový účet. Informace o nastavení ověřování služba Active Directory pro SQL Server na Linuxu najdete v konfiguračních krocích.

Můžete také použít ověřování SQL se zprostředkovatelem PowerShellu pro SQL Server. Uděláte to tak, že pomocí rutiny New-PSDrive vytvoříte nový PSDrive a zadáte správné přihlašovací údaje pro připojení.

Následující příklad vytváří nový PSDrive pomocí SQL autentizace.

# 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

Prostřednictvím rutiny Get-PSDrive můžete ověřit, že jednotka byla skutečně vytvořena.

Get-PSDrive

Jakmile vytvoříte nový PSDrive, můžete ho začít procházet.

dir SQLonDocker:\Databases

Takto může výstup vypadat. Tento výstup se může podobat tomu, co SQL Server Management Studio (SSMS) zobrazuje v uzlu Databáze. Zobrazí uživatelské databáze, ale ne systémové databáze.

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

Pokud potřebujete zobrazit všechny databáze ve vaší instanci, jednou z možností je použít rutinu Get-SqlDatabase.

Získání databází

Důležitý cmdlet, který je dobré znát, je Get-SqlDatabase. V případě mnoha operací, které zahrnují databázi nebo objekty v databázi, je možné použít rutinu Get-SqlDatabase. Pokud zadáte hodnoty pro parametry -ServerInstance i -Database, načte se pouze jeden databázový objekt. Pokud však zadáte pouze -ServerInstance parametr, vrátí se úplný seznam všech databází v této instanci.

# 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

Tady je ukázka toho, co příkaz Get-SqlDatabase vrací:

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

Prozkoumání protokolů chyb SQL Serveru

Následující kroky použijí PowerShell k prozkoumání chybových logů na vaší instanci SQL Server na Linuxu.

Na příkazovém řádku PowerShellu zkopírujte a vložte následující příkazy. Spuštění může trvat několik minut. Tyto příkazy provádějí následující kroky:

  • Zobrazení dialogového okna s výzvou k zadání názvu hostitele nebo IP adresy vaší instance
  • Zobrazte dialogové okno PowerShell s výzvou k zadání přihlašovacích údajů. K připojení k instanci SQL Serveru v Linuxu můžete použít uživatelské jméno SQL a heslo SQL.
  • Pomocí rutiny Get-SqlErrorLog se připojte k instanci SQL Serveru v Linuxu a načtěte protokoly chyb od té doby. Yesterday

Volitelně můžete proměnnou $serverInstance nahradit IP adresou nebo názvem hostitele vaší instance SQL Serveru.

# Prompt for instance and credentials to connect to 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

Prozkoumání aktuálně dostupných rutin v PowerShellu

Modul SqlServer má v současné době k dispozici 109 rutin v prostředí Windows PowerShell, ale v PowerShellu je k dispozici jenom 62 z 109. Následuje úplný seznam 62 aktuálně dostupných cmdletů. Podrobnou dokumentaci všech rutin v modulu SqlServer najdete v referenčních informacích k rutinám sqlServer .

Následující příkaz ukazuje všechny rutiny dostupné ve verzi PowerShellu, kterou používáte.

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