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 PowerShell Core v systému Windows
- instalace PowerShellu Core v Linuxu
- instalace PowerShellu Core v macOS
- Instalace PowerShell Core na ARM
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