Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server no Linux
Este artigo apresenta o SQL Server PowerShell e explica alguns exemplos sobre como usá-lo com o PowerShell no macOS e no Linux. O PowerShell agora é um projeto de software livre 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 em um terminal no Visual Studio Code. O Visual Studio Code está disponível no macOS e no Linux. Para obter mais informações sobre a extensão MSSQL, consulte O que é a extensão MSSQL para Visual Studio Code?
Instalar o PowerShell
Para obter mais informações sobre como instalar o PowerShell em várias plataformas com suporte e experimentais, consulte os seguintes artigos:
- Instalar o PowerShell no Windows
- Instalar o PowerShell no Linux
- Instalar o PowerShell no macOS
- Instalar o PowerShell em processadores ARM
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 módulo do SqlServer 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 por meio 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 então 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 SqlServer módulo para importar os componentes do SQL Server (provedor e cmdlets do SQL Server) para um ambiente ou script do PowerShell.
Copie e cole o seguinte comando no prompt do PowerShell para importar o módulo para sua SqlServer sessão atual do PowerShell:
Import-Module SqlServer
Digite o seguinte comando no prompt do PowerShell para verificar se o SqlServer módulo foi importado corretamente:
Get-Module -Name SqlServer
O PowerShell deverá 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 à instância do SQL Server no Linux e exibir algumas propriedades do servidor.
Copie e cole os comandos a seguir no prompt do PowerShell. Quando você executar esses comandos, o PowerShell:
- Exibem uma caixa de diálogo que solicita o nome do host ou o endereço IP de sua instância
- Exibirá a caixa de diálogo Solicitação de credenciais do PowerShell, que solicita as credenciais. É possível usar o nome de usuário do SQL e a senha do SQL para se conectar à sua instância do SQL Server em Linux
- Utilize o cmdlet
Get-SqlInstancepara se conectar aoServere exibir algumas propriedades.
Opcionalmente, você pode simplesmente substituir a variável $serverInstance pelo endereço IP ou pelo nome do host da 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 deverá 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 do SQL Server de destino provavelmente terá falhado. Verifique se você pode usar as mesmas informações de conexão para se conectar no SQL Server Management Studio. Em seguida, examine as recomendações de solução de problemas de conexão.
Usar o provedor do SQL Server PowerShell.
Outra opção para se conectar à Instância do SQL Server é usar o Provedor do SQL Server PowerShell. Usar esse provedor permite que você navegue pela Instância do SQL Server de forma semelhante a como se estivesse navegando pela estrutura de árvore do Pesquisador de Objetos, mas na cmdline. Por padrão, esse provedor é apresentado como um PSDrive chamado SQLSERVER:\, que você poderá usar para se conectar às Instâncias do SQL Server às quais sua conta de domínio tem acesso e navegar por elas. Confira Etapas de configuração para obter informações sobre como configurar a autenticação do Active Directory para o SQL Server em Linux.
Use também a autenticação SQL com o Provedor 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 se a unidade foi criada executando o cmdlet Get-PSDrive.
Get-PSDrive
Depois de criar o PSDrive, comece a navegar por ele.
dir SQLonDocker:\Databases
Esta é a aparência da saída. Você pode notar que essa saída é semelhante ao que o SSMS (SQL Server Management Studio) exibe no nó Bancos de Dados. Ele exibe os bancos de dados de usuário, 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 da instância, uma opção será usar o cmdlet Get-SqlDatabase.
Obter bancos de dados
Um cmdlet importante para conhecer é 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 esse objeto de banco de dados será recuperado. No entanto, se você especificar somente o parâmetro -ServerInstance, uma lista completa de todos os bancos de dados nessa instância são retornados.
# 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 erros do SQL Server
As etapas a seguir usam o PowerShell para examinar os logs de erros na sua instância do SQL Server no Linux.
Copie e cole os comandos a seguir no prompt do PowerShell. Pode levar alguns minutos para que eles sejam executados. Esses comandos executam as seguintes etapas:
- Exibem uma caixa de diálogo que solicita o nome do host ou o endereço IP de sua instância
- Exibem a caixa de diálogo Solicitação de credenciais do PowerShell, que solicita as credenciais. É possível usar o nome de usuário do SQL e a senha do SQL para se conectar à sua instância do SQL Server em Linux
- Use o
Get-SqlErrorLogcmdlet para se conectar à instância do SQL Server no Linux e recuperar logs de erros desdeYesterday
Opcionalmente, você pode substituir a variável $serverInstance pelo endereço IP ou pelo nome do host da 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
Explorar 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 uma documentação detalhada de todos os cmdlets no módulo SqlServer, confira a referência de cmdlet 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