SQL Server PowerShell

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)

Instalar o SQL Server PowerShell

Há dois módulos do SQL Server PowerShell; SqlServer e SQLPS .

O módulo SqlServer é o módulo atual do PowerShell a ser usado.

O módulo SQLPS está incluído na instalação do SQL Server (para compatibilidade com versões anteriores), mas não está mais sendo atualizado.

O módulo do SqlServer contém versões atualizadas dos cmdlets no SQLPS e inclui novos cmdlets para dar suporte aos recursos mais recentes do SQL.

As versões anteriores do módulo SqlServerforam incluídas no SSMS (SQL Server Management Studio), mas apenas nas versões 16.x do SSMS.

Para usar o PowerShell com o SSMS 17.0 e posteriores, instale o módulo SqlServer da Galeria do PowerShell.

Você também pode usar o PowerShell com o Azure Data Studio.

Por que o módulo foi alterado de SQLPS para SqlServer?

Para enviar atualizações do SQL PowerShell, precisamos alterar a identidade do módulo do SQL PowerShell e o wrapper conhecido como SQLPS.exe. Devido a essa alteração, agora existem dois módulos do PowerShell do SQL, o módulo do SqlServer e o módulo do SQLPS.

Atualize seus scripts do PowerShell se você importar o módulo SQLPS.

Se você tiver qualquer script do PowerShell que executa Import-Module -Name SQLPS e desejar aproveitar a nova funcionalidade do provedor e os novos cmdlets, você deverá alterá-los para Import-Module -Name SqlServer. O novo módulo é instalado na pasta %ProgramFiles%\WindowsPowerShell\Modules\SqlServer. Portanto, você não precisa atualizar a variável $env:PSModulePath. Se você tiver scripts que usam uma versão de terceiros ou comunitária de um módulo chamado SqlServer, use o parâmetro de prefixo para evitar colisões de nome.

É recomendável iniciar seu script com Import-Module SQLServer para evitar problemas lado a lado se o módulo SQLPS estiver instalado na mesma máquina.

Esta seção se aplica aos scripts executados no PowerShell e não ao SQL Agent. O novo módulo pode ser usado com etapas de trabalho do SQL Agent por meio de #NOSQLPS.

Componentes do SQL Server PowerShell

O módulo SqlServer é fornecido com:

  • Provedores do PowerShell, que habilita um mecanismo de navegação simples semelhante aos caminhos do sistema de arquivos. Crie caminhos semelhantes aos caminhos do sistema de arquivos, nos quais a unidade é associada ao modelo de objeto de gerenciamento do SQL Server e os nós se baseiam nas classes de modelo do objeto. Você pode usar os comandos conhecidos, como cd (alias de Set-Location) e dir (alias de Get-ChildItem), para navegar pelos caminhos de maneira semelhante à forma como navega pelas pastas em uma janela do prompt de comando. Também pode usar outros comandos, como ren (alias de Rename-Item) ou del (alias de Remove-Item), para executar ações nos nós no caminho.

  • Um conjunto de cmdlets que dá suporte a ações, como a execução de um script sqlcmd que contém instruções Transact-SQL ou XQuery.

  • Os cmdlets e o provedor do AS, que antes eram instalados separadamente.

Versões do SQL Server

Os cmdlets do SQL PowerShell podem ser usados para gerenciar instâncias do Banco de Dados SQL do Azure, do Azure Synapse Analytics e de todos os produtos compatíveis com SQL Server.

Os identificadores do SQL Server que contêm caracteres sem suporte em caminhos do PowerShell

Os cmdlets Encode-Sqlname (alias de ConvertTo-EncodedSqlName) e Decode-Sqlname (alias de ConvertFrom-EncodedSqlName) ajudam você a especificar os identificadores do SQL Server que contêm caracteres sem suporte nos caminhos do PowerShell. Para obter mais informações, consulte SQL Server Identifiers in PowerShell.

Use o cmdlet Convert-UrnToPath para converter um nome de recurso exclusivo de um objeto do Mecanismo de Banco de Dados para um caminho do provedor do SQL Server PowerShell. Para obter mais informações, consulte Convert URNs to SQL Server Provider Paths.

Expressões de consultas e nomes de recursos uniformes

As expressões de consulta são cadeias de caracteres que usam uma sintaxe similar à do XPath para especificar um conjunto de critérios que enumera um ou mais objetos em uma hierarquia de modelo de objetos. Um URN (Uniform Resource Name) é um tipo específico de cadeia de caracteres de expressão de consulta que identifica exclusivamente um único objeto. Para obter mais informações, consulte Query Expressions and Uniform Resource Names.

SQL Server Agent

Não há nenhuma alteração no módulo usado pelo SQL Server Agent. Portanto, os trabalhos do SQL Server Agent, que têm etapas de trabalho do tipo PowerShell, usam o módulo SQLPS. Para obter mais informações, confira Como executar o PowerShell com o SQL Server Agent. No entanto, do SQL Server 2019 em diante, é possível desabilitar o SQLPS. Para fazer isso, você pode adicionar na primeira linha de uma etapa de trabalho do tipo PowerShell #NOSQLPS, o que impede que o SQL Agent carregue automaticamente o módulo SQLPS. Quando você faz isso, o trabalho do SQL Agent executa a versão do PowerShell instalada no computador e você pode usar qualquer outro módulo do PowerShell desejado.

Solucionar problemas de SQLPS

Se as etapas de trabalho do agente (subsistema do PowerShell) falharem com o erro a seguir, esta seção poderá ser útil para solucionar o problema.

Uma etapa de trabalho recebeu um erro na linha 1 em um script do PowerShell. A linha correspondente é 'import-module SQLPS'. Corrija o script e reagende o trabalho. A informação de erro retornada pelo PowerShell é: “O módulo SQLPS especificado não foi carregado porque nenhum arquivo de módulo válido foi encontrado nos diretórios de módulo.

O módulo SQLPS deve estar disponível na variável de ambiente PSModulePath. A desinstalação do SSMS 16.x pode remover o SQLPS do PSModulePath. Para verificar os valores atuais armazenados no PSModulePath, execute o seguinte PowerShell:

 $env:PSModulePath -split ";"

Se o caminho estiver definido, você verá uma entrada semelhante a C:\Program Files (x86)\Microsoft SQL Server\130\Tools\PowerShell\Modules. Se o caminho não estiver definido, localize a pasta SQLPS no seu servidor e adicione-a ao valor da variável de ambiente por meio do PowerShell ou em Propriedades do Sistema>Avançado>Variáveis de Ambiente.

Módulo do SQLServer com SQL Agent

Se você quiser usar o módulo SqlServer na etapa de trabalho do SQL Agent, coloque esse código nas duas primeiras linhas do script.

#NOSQLPS
Import-Module -Name SqlServer

Referência de cmdlet

Próximas etapas