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.
Invoke-Sqlcmd é um cmdlet do SQL Server que executa scripts que contêm instruções dos idiomas (Transact-SQL e XQuery) e comandos compatíveis com o utilitário sqlcmd .
Usando Invoke-Sqlcmd
O cmdlet Invoke-Sqlcmd permite que você execute seus arquivos de script sqlcmd em um ambiente do Windows PowerShell. Muito do que você pode fazer com o sqlcmd também pode ser feito usando Invoke-Sqlcmd.
Este é um exemplo de chamada Invoke-Sqlcmd para executar uma consulta simples, semelhante à especificação do sqlcmd com as opções -Q e -S :
Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance "MyComputer\MyInstance"
Este é um exemplo de chamar Invoke-Sqlcmd, especificando um arquivo de entrada e canalizando a saída para um arquivo, isso é semelhante à especificação do sqlcmd com as opções -i e -o :
Invoke-Sqlcmd -InputFile "C:\MyFolder\TestSQLCmd.sql" | Out-File -FilePath "C:\MyFolder\TestSQLCmd.rpt"
Este é um exemplo de como usar uma matriz do Windows PowerShell para passar várias variáveis de script sqlcmd para Invoke-Sqlcmd. Os caracteres "$" que identificam as variáveis de script sqlcmd na instrução SELECT foram escapados usando o caractere de escape "'":
$MyArray = "MyVar1 = 'String1'", "MyVar2 = 'String2'"
Invoke-Sqlcmd -Query "SELECT `$(MyVar1) AS Var1, `$(MyVar2) AS Var2;" -Variable $MyArray
Este é um exemplo de como usar o provedor do SQL Server para Windows PowerShell para navegar até uma instância do Mecanismo de Banco de Dados e, em seguida, usar o cmdlet Get-Item do Windows PowerShell para recuperar o objeto do SMO Server para a instância e passá-lo para Invoke-Sqlcmd:
Set-Location SQLSERVER:\SQL\MyComputer\MyInstance
Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance (Get-Item .)
O parâmetro -Query é posicional e não precisa ser nomeado. Se a primeira cadeia de caracteres que é passada para Invoke-Sqlcmd: não for nomeada, ela será tratada como o parâmetro -Query.
Invoke-Sqlcmd "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance "MyComputer\MyInstance"
Contexto de trajetória no Invoke-Sqlcmd
Se você não usar o parâmetro -Database, o contexto do banco de dados para Invoke-Sqlcmd será definido pelo caminho que está ativo quando o cmdlet é chamado.
| Caminho | Contexto do banco de dados |
|---|---|
| Começa com um disco diferente de SQLSERVER: | O banco de dados padrão para a ID de logon na instância padrão no computador local. |
| SQLSERVER:\SQL | O banco de dados padrão para a ID de logon na instância padrão no computador local. |
| SQLSERVER:\SQL\ComputerName | O banco de dados padrão para a ID de logon na instância padrão no computador especificado. |
| SQLSERVER:\SQL\ComputerName\InstanceName | O banco de dados padrão para a ID de logon na instância especificada no computador especificado. |
| SQLSERVER:\SQL\ComputerName\InstanceName\Databases | O banco de dados padrão para a ID de logon na instância especificada no computador especificado. |
| SQLSERVER:\SQL\ComputerName\InstanceName\Databases\DatabaseName | O banco de dados especificado na instância especificada no computador especificado. Isso também se aplica a caminhos mais longos, como um caminho que especifica o nó Tabelas e Colunas em um banco de dados. |
Por exemplo, suponha que o banco de dados padrão para sua conta do Windows na instância padrão do computador local seja o master. Então, os seguintes comandos retornariam master:
Set-Location SQLSERVER:\SQL
Invoke-Sqlcmd "SELECT DB_NAME() AS DatabaseName;"
Os seguintes comandos retornariam AdventureWorks2012:
Set-Location SQLSERVER:\SQL\MyComputer\DEFAULT\Databases\AdventureWorks2012\Tables\Person.Person
Invoke-Sqlcmd "SELECT DB_NAME() AS DatabaseName;"
Invoke-Sqlcmd fornece um aviso quando usa o contexto de banco de dados de trajetos. Você pode usar o parâmetro -SuppressProviderContextWarning para desativar a mensagem de aviso. Você pode usar o parâmetro -IgnoreProviderContext para informar Invoke-Sqlcmd sempre usar o banco de dados padrão para o logon.
Comparando Invoke-Sqlcmd e o Utilitário sqlcmd
Invoke-Sqlcmd pode ser usado para executar muitos dos scripts que podem ser executados usando o utilitário sqlcmd . No entanto, Invoke-Sqlcmd é executado em um ambiente do Windows PowerShell que é diferente do ambiente de prompt de comando em que o sqlcmd é executado. O comportamento de Invoke-Sqlcmd foi modificado para funcionar em um ambiente do Windows PowerShell.
Nem todos os comandos sqlcmd são implementados no Invoke-Sqlcmd. Os comandos que não são implementados incluem o seguinte: :!!, :connect, :error, :out, :ed, :list, :listvar, :reset, :p erftrace e :serverlist.
Invoke-Sqlcmd não inicializa o ambiente sqlcmd ou variáveis de script, como SQLCMDDBNAME ou SQLCMDWORKSTATION.
Invoke-Sqlcmd não exibe mensagens, como a saída de instruções PRINT, a menos que você especifique o parâmetro comum Windows PowerShell -Verbose . Por exemplo:
Invoke-Sqlcmd -Query "PRINT N'abc';" -Verbose
Nem todos os parâmetros sqlcmd são necessários em um ambiente do PowerShell. Por exemplo, o Windows PowerShell formata toda a saída de cmdlets, portanto, os parâmetros sqlcmd que especificam opções de formatação não são implementados no Invoke-Sqlcmd. A tabela a seguir mostra a relação entre os parâmetros Invoke-Sqlcmd e as opções do sqlcmd :
| Descrição | Opção sqlcmd | parâmetro Invoke-Sqlcmd |
|---|---|---|
| Nome do servidor e da instância. | -S | -ServerInstance |
| O banco de dados inicial a ser usado. | -d | -Base de dados |
| Execute a consulta especificada e saia. | -Q | -Consulta |
| ID de logon da Autenticação do SQL Server. | -U | -Nome de usuário |
| Senha de Autenticação do SQL Server. | -P | -Senha |
| Definição de variável. | -v | -Variável |
| Intervalo de tempo limite de consulta. | -T | -QueryTimeout (Tempo de Espera da Consulta) |
| Parar a execução devido a um erro | -b | -AbortOnError |
| Conexão dedicada de administrador. | -Um | -DedicatedAdministratorConnection |
| Desabilite comandos interativos, script de inicialização e variáveis de ambiente. | -X | DesabilitarComandos |
| Desabilitar substituição de variável. | -X | -DesativarVariáveis |
| Nível mínimo de severidade a ser relatado. | -V | -SeverityLevel |
| Nível mínimo de erro a ser relatado. | -m | -ErrorLevel |
| Intervalo de tempo limite de logon. | -l | -ConnectionTimeout |
| Nome do host. | -H | -HostName |
| Alterar senha e sair. | -Z | -NewPassword |
| Arquivo de entrada que contém uma consulta | -eu | -ArquivoDeEntrada |
| Comprimento máximo da saída de caracteres. | -w | -MaxCharLength |
| Comprimento máximo da saída binária. | -w | -MaxBinaryLength |
| Conecte-se usando criptografia SSL. | Nenhum parâmetro | -EncryptConnection |
| Exibir erros | Nenhum parâmetro | -OutputSqlErrors |
| Enviar mensagens de saída para stderr. | -r | Nenhum parâmetro |
| Usar as configurações regionais do cliente | -R | Nenhum parâmetro |
| Execute a consulta especificada e permaneça em execução. | -q | Nenhum parâmetro |
| Página de código a ser usada para dados de saída. | -f | Nenhum parâmetro |
| Alterar uma senha e continuar funcionando | -Z | Nenhum parâmetro |
| Tamanho do pacote | -a | Nenhum parâmetro |
| Separador de coluna | -s | Nenhum parâmetro |
| Controlar cabeçalhos de saída | -h | Nenhum parâmetro |
| Especificar caracteres de controle | -k | Nenhum parâmetro |
| Largura fixa de exibição | -Y | Nenhum parâmetro |
| Largura de exibição com comprimento variável | -y | Nenhum parâmetro |
| Entrada de eco | -E | Nenhum parâmetro |
| Habilitar identificadores entre aspas | -Eu | Nenhum parâmetro |
| Remover espaços à direita | -w | Nenhum parâmetro |
| Listar instâncias | -L | Nenhum parâmetro |
| Formatar saída como Unicode | -U | Nenhum parâmetro |
| Imprimir estatísticas | -p | Nenhum parâmetro |
| Fim do comando | -c | Nenhum parâmetro |
| Conectar-se usando a Autenticação do Windows | -E | Nenhum parâmetro |
Consulte Também
Usar cmdlets do Mecanismo de Banco de Dados
Utilitário sqlcmd
Usar o utilitário sqlcmd