Usare PowerShell in Windows per gestire SQL Server in Linux
Si applica a: SQL Server - Linux
Questo articolo presenta SQL Server PowerShell e illustra alcuni esempi di come usarlo con SQL Server in Linux. Il supporto di PowerShell per SQL Server è attualmente disponibile in Windows, macOS e Linux. Questo articolo illustra in dettaglio l'uso di un computer Windows per connettersi a un'istanza di SQL Server remota in Linux.
Installare la versione più recente di SQL PowerShell in Windows
Il modulo SQL Server PowerShell in Windows viene gestito in PowerShell Gallery. Quando si lavora con SQL Server, è consigliabile usare sempre la versione più recente del modulo di PowerShell SqlServer.
Operazioni preliminari
Vedere i problemi noti di SQL Server in Linux.
Avviare PowerShell e importare il modulo sqlserver
Avviare PowerShell in Windows. Per avviare una nuova sessione di Windows PowerShell, usare Win+R nel computer Windows in uso e digitare PowerShell.
SQL Server fornisce un modulo di PowerShell denominato SqlServer. È possibile usare il modulo SqlServer per importare i componenti di SQL Server (provider e cmdlet di SQL Server) in un ambiente o uno script di PowerShell.
Copiare e incollare il comando seguente al prompt di PowerShell per importare il modulo SqlServer nella sessione di PowerShell corrente:
Import-Module SqlServer
Digitare il comando seguente al prompt di PowerShell per verificare che il modulo di SqlServer sia stato importato correttamente:
Get-Module -Name SqlServer
PowerShell dovrebbe visualizzare informazioni simili all'output seguente:
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 21.1.18102 SqlServer {Add-SqlAvailabilityDatabase, Add-SqlAvailabilityGroupList...
Connettersi a SQL Server e ottenere informazioni sul server
Si userà ora PowerShell in Windows per connettersi all'istanza di SQL Server in Linux e visualizzare alcune proprietà del server.
Copiare e incollare i comandi seguenti al prompt di PowerShell. Quando si eseguono questi comandi, PowerShell effettua le operazioni seguenti:
- Visualizzano una finestra di dialogo in cui viene richiesto il nome host o l'indirizzo IP dell'istanza
- Visualizzano la finestra di dialogo Richiesta credenziali di Windows PowerShell in cui vengono richieste le credenziali. È possibile usare il nome utente SQL e la password SQL per connettersi all'istanza di SQL Server in Linux
- Usare il cmdlet Get-SqlInstance per connettersi al server e visualizzare alcune proprietà
Facoltativamente, è possibile sostituire la variabile $serverInstance
con l'indirizzo IP o il nome host dell'istanza di SQL Server.
# 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 get a few properties
Get-SqlInstance -ServerInstance $serverInstance -Credential $credential
# done
PowerShell dovrebbe visualizzare informazioni simili all'output seguente:
Instance Name Version ProductLevel UpdateLevel HostPlatform HostDistribution
------------- ------- ------------ ----------- ------------ ----------------
your_server_instance 14.0.3048 RTM CU13 Linux Ubuntu
Nota
Se non viene visualizzato nulla per questi valori, la connessione all'istanza di SQL Server di destinazione probabilmente non è riuscita. Verificare che sia possibile usare le stesse informazioni di connessione per connettersi da SQL Server Management Studio. Rivedere poi i consigli per la risoluzione dei problemi di connessione.
Utilizzare il provider di SQL Server PowerShell
Un'altra opzione per connettersi all'istanza di SQL Server prevede l'uso del provider SQL Server PowerShell. Questo provider consente di esplorare l'istanza di SQL Server come se si stesse esplorando la struttura ad albero in Esplora oggetti, ma dalla riga di comando. Per impostazione predefinita, questo provider viene presentato come unità PSDrive denominata SQLSERVER:\
, che è possibile usare per connettersi alle istanze di SQL Server a cui l'account di dominio ha accesso ed esplorarle. Per altre informazioni su come configurare l'autenticazione di Active Directory per SQL Server in Linux, vedere Passaggi di configurazione.
È anche possibile usare l'autenticazione di SQL con il provider SQL Server PowerShell. A questo scopo, usare il cmdlet New-PSDrive
per creare una nuova unità PSDrive e immettere le credenziali appropriate per la connessione.
Nell'esempio seguente viene illustrato come creare una nuova unità PSDrive usando l'autenticazione 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
Per verificare che l'unità sia stata creata, eseguire il cmdlet Get-PSDrive
.
Get-PSDrive
Dopo aver creato la nuova unità PSDrive, è possibile iniziare a esplorarla.
dir SQLonDocker:\Databases
L'output potrebbe essere simile al seguente. È possibile notare che l'output è simile a quello che verrà visualizzato da SQL Server Management Studio (SSMS) nel nodo Databases. Visualizza i database utente, ma non i database di sistema.
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
Se è necessario visualizzare tutti i database dell'istanza, è possibile usare il cmdlet Get-SqlDatabase.
Esaminare i log degli errori di SQL Server
La procedura seguente usa PowerShell in Windows per esaminare i log degli errori connettendosi all'istanza di SQL Server in Linux. Si userà anche il cmdlet Out-GridView per visualizzare le informazioni dei log degli errori in una visualizzazione griglia.
Copiare e incollare i comandi seguenti al prompt di PowerShell. L'esecuzione dei comandi potrebbe richiedere alcuni minuti. Questi comandi eseguono le operazioni seguenti:
- Visualizzano una finestra di dialogo in cui viene richiesto il nome host o l'indirizzo IP dell'istanza
- Visualizzano la finestra di dialogo Richiesta credenziali di Windows PowerShell in cui vengono richieste le credenziali. È possibile usare il nome utente SQL e la password SQL per connettersi all'istanza di SQL Server in Linux
- Usare il cmdlet Get-SqlErrorLog per connettersi all'istanza di SQL Server in Linux e recuperare i log degli errori da ieri (Yesterday)
- Invio dell'output tramite pipe al cmdlet Out-GridView
Facoltativamente, è possibile sostituire la variabile $serverInstance
con l'indirizzo IP o il nome host dell'istanza di SQL Server.
# 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 | Out-GridView
# done