SQL Server PowerShell

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse Analytics AnalyticsAnalytics Platform System (PDW)

Installare SQL Server PowerShell

Esistono due moduli SQL Server PowerShell: SqlServer e SQLPS.

SqlServer è il modulo corrente di PowerShell da usare.

SQLPS è incluso nell'installazione di SQL Server (per compatibilità con le versioni precedenti), ma non viene più aggiornato.

Il modulo SqlServer contiene le versioni aggiornate dei cmdlet di SQLPS e include nuovi cmdlet per il supporto delle funzionalità SQL più recenti.

Le versioni precedenti del modulo SqlServererano incluse in SQL Server Management Studio (SSMS), ma solo con le versioni 16.x di SSMS.

Per usare PowerShell con SSMS versione 17.0 e successive, installare il modulo SqlServer da PowerShell Gallery.

È anche possibile usare PowerShell con Azure Data Studio.

Perché il modulo è cambiato da SQLPS a SqlServer?

Per inviare gli aggiornamenti di SQL PowerShell, è stato necessario modificare l'identità del modulo SQL PowerShell, nonché il wrapper noto come SQLPS.exe. A causa di questa modifica, sono ora presenti due moduli SQL PowerShell: SqlServer e SQLPS.

Aggiornare gli script di PowerShell se si importa il modulo SQLPS.

Se si hanno script di PowerShell script che eseguono Import-Module -Name SQLPS e se si vogliono sfruttare la nuova funzionalità del provider e i nuovi cmdlet, è necessario modificarli in Import-Module -Name SqlServer. Il nuovo modulo viene installato nella cartella %ProgramFiles%\WindowsPowerShell\Modules\SqlServer. Pertanto, non è necessario aggiornare la variabile $env:PSModulePath. Se si hanno script che usano una versione di terze parti o community di un modulo denominato SqlServer, usare il parametro Prefix per evitare conflitti di nome.

È consigliabile avviare lo script con Import-Module SQLServer per evitare problemi di istanze affiancate se il modulo SQLPS viene installato nello stesso computer.

Questa sezione si applica agli script eseguiti da PowerShell e non da SQL Agent. Il nuovo modulo può essere usato con i passaggi del processo di SQL Agent tramite #NOSQLPS.

Componenti di PowerShell di SQL Server

Il modulo SqlServer include:

  • Provider PowerShell, che forniscono un semplice meccanismo di navigazione analogo ai percorsi del file system. È possibile creare percorsi simili a quelli del file system, in cui l'unità è associata a un modello a oggetti di gestione di SQL Server e i nodi sono basati sulle classi del modello a oggetti. È quindi possibile usare comandi comuni come cd (alias per Set-Location) e dir (alias per Get-Children) per un'esplorazione dei percorsi simile all'esplorazione delle cartelle in una finestra del prompt dei comandi. È possibile usare altri comandi, ad esempio ren (alias per Rename-Item) o del(alias per Remove-Item), per eseguire azioni sui nodi nel percorso.

  • Un set di cmdlet che supportano azioni come l'esecuzione di uno script sqlcmd contenente istruzioni Transact-SQL o XQuery.

  • I cmdlet e il provider AS, che in precedenza erano installati separatamente.

Versioni di SQL Server

I cmdlet SQL PowerShell possono essere usati per gestire le istanze del database SQL di Azure, di Azure Synapse Analytics e di tutti i prodotti SQL Server supportati.

Identificatori SQL Server che contengono caratteri non supportati nei percorsi di PowerShell

I cmdlet Encode-Sqlname (alias per ConvertTo-EncodedSqlName) e Decode-Sqlname (alias per ConvertFrom-EncodedSqlName) consentono di specificare identificatori SQL Server che contengono caratteri non supportati nei percorsi di Windows PowerShell. Per altre informazioni, vedere Identificatori di SQL Server in PowerShell.

Usare il cmdlet Convert-UrnToPath per convertire un URN (Uniform Resource Name) di un oggetto motore di database in un percorso del provider SQL Server PowerShell. Per altre informazioni, vedere Conversione di URN in percorsi di provider di SQL Server.

Espressioni di query e Uniform Resource Name

Le espressioni di query sono stringhe che usano una sintassi analoga a XPath per specificare un set di criteri che enumera uno o più oggetti in una gerarchia del modello a oggetti. Un Unique Resource Name (URN) è un tipo specifico di stringa di espressione di query che identifica un singolo oggetto in modo univoco. Per altre informazioni, vedere Espressioni di query e Uniform Resource Name.

SQL Server Agent

Non sono state apportate modifiche al modulo usato da SQL Server Agent. Di conseguenza, i processi di SQL Server Agent, che hanno passaggi di processo di tipo PowerShell, usano il modulo SQLPS. Per altre informazioni, vedere Come eseguire PowerShell con SQL Server Agent. A partire da SQL Server 2019, tuttavia, è possibile disabilitare SQLPS. A tale scopo, nella prima riga di un passaggio di processo di tipo PowerShell è possibile aggiungere #NOSQLPS per impedire a SQL Agent di caricare automaticamente il modulo SQLPS. Quando si esegue questa operazione, il processo di SQL Agent esegue la versione di PowerShell installata nel computer e quindi è possibile usare qualsiasi altro modulo di PowerShell desiderato.

Risoluzione dei problemi di SQLPS

Se vengono visualizzati i passaggi del processo dell'agente (sottosistema PowerShell) con l'errore seguente, questa sezione può essere utile per risolvere il problema.

Un passaggio del processo ha ricevuto un errore alla riga 1 in uno script di PowerShell. La riga corrispondente è “import-module SQLPS”. Correggere lo script e riprogrammare il processo. Le informazioni sull'errore restituite da PowerShell sono le seguenti: 'Il modulo “SQLPS” specificato non è stato caricato perché non è stato trovato alcun file di modulo valido in alcuna directory del modulo.

Il modulo SQLPS deve essere disponibile nella variabile di ambiente PSModulePath. La disinstallazione di SSMS 16.x può rimuovere SQLPS da PSModulePath. Per controllare i valori correnti archiviati in PSModulePath, eseguire l'istanza di PowerShell seguente:

 $env:PSModulePath -split ";"

Se il percorso è impostato, verrà visualizzata una voce simile a C:\Program Files (x86)\Microsoft SQL Server\130\Tools\PowerShell\Modules. Se il percorso non è impostato, individuare la cartella SQLPS nel server e aggiungerla al valore della variabile di ambiente tramite PowerShell o in Proprietà del sistema>Avanzate>Variabili di ambiente.

Modulo SQL Server con SQL Agent

Se si vuole usare il modulo SqlServer nel passaggio del processo di SQL Agent, inserire il codice nelle prime due righe dello script.

#NOSQLPS
Import-Module -Name SqlServer

Informazioni di riferimento sui cmdlet

Passaggi successivi