Partilhar via


Usar o PowerShell no Linux para gerenciar o SQL Server no Linux

Aplica-se a:SQL Server - Linux

Este artigo apresenta o SQL Server PowerShell e apresenta alguns exemplos sobre como usá-lo com o PowerShell no macOS e Linux. O PowerShell agora é um projeto de código aberto no GitHub.

Para obter mais informações sobre o Windows PowerShell, consulte O que é o Windows PowerShell?

Opções de editor multiplataforma

Todas as etapas a seguir para o PowerShell funcionam em um terminal regular ou você pode executá-las a partir de um terminal no Visual Studio Code ou no Azure Data Studio. O VS Code e o Azure Data Studio estão disponíveis no macOS e Linux. Para obter mais informações sobre o Azure Data Studio, consulte Guia de início rápido: usar o Azure Data Studio para conectar e consultar o SQL Server. Você também pode querer considerar o uso do suporte do Editor PowerShell para o Azure Data Studio.

Instalar o PowerShell

Para obter mais informações sobre como instalar o PowerShell em várias plataformas experimentais e com suporte, consulte os seguintes artigos:

Instalar o módulo SqlServer

O módulo SqlServer é mantido na Galeria do PowerShell. Ao trabalhar com o SQL Server, você sempre deve usar a versão mais recente do SqlServer módulo PowerShell.

Para instalar o SqlServer módulo, abra uma sessão do PowerShell e execute o seguinte código:

Install-Module -Name SqlServer

Para obter mais informações sobre como instalar o SqlServer módulo da Galeria do PowerShell, consulte Instalar o módulo do SQL Server PowerShell.

Usar o módulo SqlServer

Vamos começar iniciando o PowerShell. Se você estiver no macOS ou Linux, abra uma sessão de terminal no computador e digite pwsh para iniciar uma nova sessão do PowerShell. No Windows, use Win+R e digite pwsh para iniciar uma nova sessão do PowerShell.

pwsh

O SQL Server fornece um módulo do PowerShell chamado SqlServer. Você pode usar o módulo SqlServer para importar os componentes do SQL Server (fornecedor do SQL Server e cmdlets) para um ambiente ou script do PowerShell.

Copie e cole o seguinte comando no prompt do PowerShell para importar o SqlServer módulo para sua sessão atual do PowerShell:

Import-Module SqlServer

Digite o seguinte comando no prompt do PowerShell para verificar se o módulo foi importado SqlServer corretamente:

Get-Module -Name SqlServer

O PowerShell deve exibir informações semelhantes à seguinte saída:

ModuleType Version    Name          ExportedCommands
---------- -------    ----          ----------------
Script     21.1.18102 SqlServer     {Add-SqlAvailabilityDatabase, Add-SqlAvailabilityGroupList...

Conectar-se ao SQL Server e obter informações do servidor

As etapas a seguir usam o PowerShell para se conectar à sua instância do SQL Server no Linux e exibir algumas propriedades do servidor.

Copie e cole os seguintes comandos no prompt do PowerShell. Quando você executa esses comandos, o PowerShell irá:

  • Exibir uma caixa de diálogo que solicita o nome do host ou o endereço IP da instância
  • Exiba a caixa de diálogo de solicitação de credenciais do PowerShell , que solicita as credenciais. Você pode usar o seu nome de utilizador SQL e a sua senha SQL para se conectar à sua instância do SQL Server no Linux.
  • Use o Get-SqlInstance cmdlet para se conectar ao Server e exibir algumas propriedades

Opcionalmente, você pode simplesmente substituir a variável $serverInstance pelo endereço IP ou pelo nome do host da sua instância do 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 return a few properties
Get-SqlInstance -ServerInstance $serverInstance -Credential $credential
# done

O PowerShell deve exibir informações semelhantes à seguinte saída:

Instance Name                   Version    ProductLevel UpdateLevel  HostPlatform HostDistribution
-------------                   -------    ------------ -----------  ------------ ----------------
your_server_instance            14.0.3048  RTM          CU13         Linux        Ubuntu

Observação

Se nada for exibido para esses valores, a conexão com a instância de destino do SQL Server provavelmente falhará. Certifique-se de que você pode usar as mesmas informações de conexão para se conectar a partir do SQL Server Management Studio. Em seguida, revise as recomendações de solução de problemas de conexão .

Usar o provedor do PowerShell do SQL Server

Outra opção para se conectar à sua instância do SQL Server é usar o SQL Server PowerShell Provider. O uso do provedor permite que se navegue pela instância do SQL Server de forma semelhante a navegar na estrutura de árvore do Explorador de Objetos, mas na linha de comandos. Por padrão, esse provedor é apresentado como um PSDrive chamado SQLSERVER:\, que você pode usar para se conectar & navegar pelas instâncias do SQL Server às quais sua conta de domínio tem acesso. Consulte Etapas de configuração para obter informações sobre como configurar a autenticação do Ative Directory para SQL Server no Linux.

Você também pode usar a autenticação SQL com o Provedor do SQL Server PowerShell. Para fazer isso, use o New-PSDrive cmdlet para criar um novo PSDrive e fornecer as credenciais adequadas para se conectar.

No exemplo a seguir, você verá um exemplo de como criar um novo PSDrive usando a autenticação 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

Você pode confirmar que a unidade foi criada executando o cmdlet Get-PSDrive.

Get-PSDrive

Depois de criar o seu novo PSDrive, pode começar a navegar nele.

dir SQLonDocker:\Databases

Veja como a saída pode ficar. Você pode notar que essa saída é semelhante ao que o SQL Server Management Studio (SSMS) exibe no nó Bancos de dados. Ele exibe os bancos de dados de usuários, mas não os bancos de dados do 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 você precisar ver todos os bancos de dados em sua instância, uma opção é usar o cmdlet Get-SqlDatabase.

Obter bancos de dados

Um cmdlet importante a ser conhecido é o Get-SqlDatabase. Para muitas operações que envolvem um banco de dados ou objetos dentro de um banco de dados, o cmdlet Get-SqlDatabase pode ser usado. Se você fornecer valores para os parâmetros -ServerInstance e -Database, somente um objeto de banco de dados será recuperado. No entanto, se você especificar apenas o parâmetro -ServerInstance, uma lista completa de todos os bancos de dados nessa instância será retornada.

# 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

Aqui está um exemplo do que o comando Get-SqlDatabase retorna:

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

Examinar os logs de erro do SQL Server

Os passos a seguir utilizam o PowerShell para examinar os logs de erro na instância do SQL Server no Linux.

Copie e cole os seguintes comandos no prompt do PowerShell. Eles podem levar alguns minutos para correr. Esses comandos executam as seguintes etapas:

  • Exibir uma caixa de diálogo que solicita o nome do host ou o endereço IP da instância
  • Exiba a caixa de diálogo de solicitação de credenciais do PowerShell que pede as credenciais. Você pode usar o seu nome de utilizador SQL e a sua senha SQL para se conectar à sua instância do SQL Server no Linux.
  • Use o Get-SqlErrorLog cmdlet para se conectar à instância do SQL Server no Linux e recuperar logs de erro desde Yesterday

Opcionalmente, você pode substituir a variável $serverInstance pelo endereço IP ou pelo nome do host da sua instância do 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
# done

Explore os cmdlets atualmente disponíveis no PowerShell

Embora o módulo SqlServer atualmente tenha 109 cmdlets disponíveis no Windows PowerShell, apenas 62 dos 109 estão disponíveis no PowerShell. A seguir está uma lista completa de 62 cmdlets atualmente disponíveis. Para obter documentação detalhada de todos os cmdlets no módulo SqlServer, consulte a referência de cmdlets do SqlServer .

O comando a seguir mostra todos os cmdlets disponíveis na versão do PowerShell que você está usando.

Get-Command -Module SqlServer -CommandType Cmdlet |
Sort-Object -Property Noun |
Select-Object 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