Compartilhar via


Invoke-Sqlcmd

Executa um script que contém instruções compatíveis com o utilitário SQLCMD do SQL Server.

Sintaxe

Invoke-Sqlcmd
      [-ServerInstance <PSObject>]
      [-Database <String>]
      [-EncryptConnection]
      [-Username <String>]
      [-Password <String>]
      [[-Query] <String>]
      [-QueryTimeout <Int32>]
      [-ConnectionTimeout <Int32>]
      [-ErrorLevel <Int32>]
      [-SeverityLevel <Int32>]
      [-MaxCharLength <Int32>]
      [-MaxBinaryLength <Int32>]
      [-AbortOnError]
      [-DedicatedAdministratorConnection]
      [-DisableVariables]
      [-DisableCommands]
      [-HostName <String>]
      [-NewPassword <String>]
      [-Variable <String[]>]
      [-InputFile <String>]
      [-OutputSqlErrors <Boolean>]
      [-IncludeSqlUserErrors]
      [-SuppressProviderContextWarning]
      [-IgnoreProviderContext]
      [<CommonParameters>]

Description

O cmdlet Invoke-Sqlcmd executa um script que contém as linguagens e os comandos compatíveis com o utilitário SQLCMD do SQL Server. Os comandos com suporte são instruções Transact-SQL e o subconjunto da sintaxe XQuery compatível com o mecanismo de banco de dados. Esse cmdlet também aceita muitos dos comandos com suporte nativo pelo SQLCMD, como GO e QUIT. Esse cmdlet também aceita as variáveis de script SQLCMD, como SQLCMDUSER. Por padrão, esse cmdlet não define variáveis de script SQLCMD.

Esse cmdlet não dá suporte ao uso de comandos relacionados principalmente à edição interativa de script. Os comandos que não têm suporte são: :!!, :connect, :error, :out, :ed, :list, :listvar, :reset, :perftrace e :serverlist.

Quando esse cmdlet é executado, o primeiro conjunto de resultados retornado pelo script é exibido como uma tabela formatada. Se os conjuntos de resultados subsequentes contiverem listas de colunas diferentes da primeira, esses conjuntos de resultados não serão exibidos. Se os conjuntos de resultados subsequentes após o primeiro conjunto tiverem a mesma lista de colunas, suas linhas serão acrescentadas à tabela formatada que contém as linhas retornadas pelo primeiro conjunto de resultados.

Você pode exibir SQL Server saída da mensagem, como aquelas resultantes da instrução SQL PRINT, especificando o parâmetro Verbose.

Exemplos

Exemplo 1: conectar-se a uma instância nomeada e executar um script

PS C:\> Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance "MyComputer\MainInstance"
 TimeOfQuery
 -----------
 5/13/2010 8:49:43 PM

Esse comando se conecta a uma instância nomeada do Mecanismo de Banco de Dados SQL em um computador e executa um script Transact-SQL básico.

Exemplo 2: invocar comandos em um arquivo de script e salvar a saída em um arquivo de texto

PS C:\> Invoke-Sqlcmd -InputFile "C:\ScriptFolder\TestSqlCmd.sql" | Out-File -FilePath "C:\ScriptFolder\TestSqlCmd.rpt"
Output sent to TestSqlCmd.rpt.

Esse comando lê um arquivo que contém instruções Transact-SQL e comandos SQLCMD, executa o arquivo e grava a saída em outro arquivo. O arquivo de saída pode conter informações proprietárias, portanto, você deve proteger os arquivos de saída com as permissões NTFS apropriadas.

Exemplo 3: invocar um script e passar valores variáveis de uma cadeia de caracteres

PS C:\> $StringArray = "MYVAR1='String1'", "MYVAR2='String2'"
PS C:\> Invoke-Sqlcmd -Query "SELECT `$(MYVAR1) AS Var1, `$(MYVAR2) AS Var2;" -Variable $StringArray
Var1     Var2
----     ----
String1  String2

Esse comando usa uma matriz de cadeias de caracteres como entrada para o parâmetro Variable . A matriz define várias variáveis SQLCMD. Os sinais $ na instrução SELECT que identificam as variáveis SQLCMD são escapados usando o caractere de tique de fundo (').

Exemplo 4: Invocar um script e passar variáveis do mecanismo de banco de dados SQL

PS C:\>Set-Location "SQLSERVER:\SQL\MyComputer\MainInstance"
PS C:\>Invoke-Sqlcmd -Query "SELECT SERVERPROPERTY('MachineName') AS ComputerName;" -ServerInstance (Get-Item .)
 ComputerName
 ------------
 MyComputer

Esse comando usa Set-Location para navegar até o caminho do provedor de SQL Server Windows PowerShell para uma instância do Mecanismo de Banco de Dados SQL. Em seguida, ele chama Get-Item para recuperar um objeto sql management object server para uso como o parâmetro ServerInstance de Invoke-Sqlcmd.

Exemplo 5: executar uma consulta e exibir a saída detalhada

PS C:\> Invoke-Sqlcmd -Query "PRINT N'abc'" -Verbose
VERBOSE: abc

Esse comando usa o parâmetro Windows PowerShell Verbose para retornar a saída da mensagem do comando SQL PRINT.

Exemplo 6: invocar um comando usando uma cadeia de caracteres posicional como entrada

PS C:\> Invoke-Sqlcmd "SELECT DB_NAME() AS DatabaseName;"
 WARNING: Using provider context. Server = MyComputer, Database = AdventureWorks2014. 

 DatabaseName
 ------------
 AdventureWorks2014

Esse comando usa uma cadeia de caracteres posicional para fornecer a entrada para o parâmetro Query . Ele também demonstra como Invoke-Sqlcmd usa o caminho atual para definir o contexto do banco de dados como AdventureWorks2014.

Parâmetros

-AbortOnError

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-ConnectionTimeout

Tipo:Int32
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Database

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-DedicatedAdministratorConnection

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-DisableCommands

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-DisableVariables

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-EncryptConnection

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-ErrorLevel

Tipo:Int32
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-HostName

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-IgnoreProviderContext

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-IncludeSqlUserErrors

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-InputFile

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-MaxBinaryLength

Tipo:Int32
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-MaxCharLength

Tipo:Int32
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-NewPassword

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-OutputSqlErrors

Tipo:Boolean
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Password

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Query

Tipo:String
Cargo:1
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-QueryTimeout

Tipo:Int32
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-ServerInstance

Tipo:PSObject
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-SeverityLevel

Tipo:Int32
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-SuppressProviderContextWarning

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Username

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Variable

Tipo:String[]
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

Entradas

PSObject

Saídas

Tabela formatada