Sdílet prostřednictvím


Správa SQL Serveru v Linuxu pomocí PowerShellu Core

platí pro:SQL Server – Linux

Tento článek představuje SQL Server PowerShell a provede vás několika příklady, jak ho používat s PowerShell Core (PS Core) v macOS & Linux. PowerShell Core je teď opensourcový projekt na GitHubu .

Možnosti editoru pro různé platformy

Všechny následující kroky pro PowerShell Core fungují v běžném terminálu nebo je můžete spustit z terminálu v editoru Visual Studio Code nebo Azure Data Studio. V macOS i Linuxu jsou k dispozici VS Code i Azure Data Studio. Další informace o nástroji Azure Data Studio najdete v tématu Rychlý start: Připojení a dotazování SQL Serverupomocí nástroje Azure Data Studio. Můžete také zvážit použití podpory editoru PowerShellu pro Azure Data Studio.

Instalace PowerShellu Core

Další informace o instalaci PowerShellu Core 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žít nejnovější verzi modulu SqlServer PowerShell.

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

Install-Module -Name SqlServer

Další informace o tom, jak nainstalovat modul SQL Server z PowerShell Gallery, naleznete v tématu Instalace modulu SQL Server PowerShell.

Použití modulu SqlServer

Začněme spuštěním PowerShellu Core. Pokud používáte macOS nebo Linux, otevřete na počítači relaci terminálu a zadáním pwsh spusťte novou relaci PowerShellu Core. Ve Windows použijte Win+Ra zadejte pwsh pro spuštění nového sezení PowerShell Core.

pwsh

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

Zkopírujte následující příkaz na příkazovém řádku PowerShellu a naimportujte modul SqlServer do aktuální relace PowerShellu:

Import-Module SqlServer

Na příkazovém řádku PowerShellu zadejte následující příkaz a ověřte, že se správně naimportoval modul SqlServer:

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 Core 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.
  • Pomocí rutiny Get-SqlInstance se připojte k Serveru a zobrazte několik vlastností.

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

# 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 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. Pomocí zprostředkovatele můžete procházet instanci SQL Serveru podobně jako ve stromové struktuře v Průzkumníku objektů, ale na příkazovém řádku. Ve výchozím nastavení se tento poskytovatel zobrazí jako PSDrive s názvem SQLSERVER:\, který můžete použít k připojení & procházení instancí SYSTÉMU SQL Server, ke kterým má váš účet domény přístup. Informace o nastavení ověřování 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í.

V následujícím příkladu vidíte příklad vytvoření nového PSDrivu pomocí ověřování SQL.

# 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 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ým cmdletem, o kterém je potřeba vědě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 parametr -ServerInstance, vrátí se úplný seznam všech databází v dané 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 vrátí:

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žívají PowerShell Core k prozkoumání protokolů chyb na instanci SQL Serveru v systému Linux.

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 Včera

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

# 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

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

Modul SqlServer má v současné době k dispozici 109 rutin ve Windows PowerShellu, ale v PSCore 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 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