Compartir a través de


Invoke-Sqlcmd

Ejecuta un script que contiene instrucciones compatibles con la utilidad SQLCMD de SQL Server.

Sintaxis

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

El cmdlet Invoke-Sqlcmd ejecuta un script que contiene los lenguajes y comandos admitidos por la utilidad SQLCMD de SQL Server. Los comandos admitidos son instrucciones Transact-SQL y el subconjunto de la sintaxis XQuery compatible con el motor de base de datos. Este cmdlet también acepta muchos de los comandos admitidos de forma nativa por SQLCMD, como GO y QUIT. Este cmdlet también acepta las variables de scripting de SQLCMD, como SQLCMDUSER. De forma predeterminada, este cmdlet no establece variables de scripting de SQLCMD.

Este cmdlet no admite el uso de comandos relacionados principalmente con la edición interactiva de scripts. Entre los comandos no admitidos se incluyen :!!, :connect, :error, :out, :ed, :list, :listvar, :reset, :perftrace y :serverlist.

Cuando se ejecuta este cmdlet, el primer conjunto de resultados que devuelve el script se muestra como una tabla con formato. Si los conjuntos de resultados posteriores contienen listas de columnas diferentes a las primeras, no se muestran esos conjuntos de resultados. Si los conjuntos de resultados posteriores después del primer conjunto tienen la misma lista de columnas, sus filas se anexan a la tabla con formato que contiene las filas devueltas por el primer conjunto de resultados.

Puede mostrar SQL Server salida del mensaje, como las que resultan de la instrucción PRINT de SQL, especificando el parámetro Verbose.

Ejemplos

Ejemplo 1: Conexión a una instancia con nombre y ejecución de un script

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

Este comando se conecta a una instancia con nombre del motor de SQL Database en un equipo y ejecuta un script básico de Transact-SQL.

Ejemplo 2: Invocar comandos en un archivo de script y guardar la salida en un archivo de texto

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

Este comando lee un archivo que contiene instrucciones Transact-SQL y comandos SQLCMD, ejecuta el archivo y escribe la salida en otro archivo. El archivo de salida puede contener información propietaria, por lo que debe proteger los archivos de salida con los permisos NTFS adecuados.

Ejemplo 3: Invocar un script y pasar valores de variable desde una cadena

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

Este comando usa una matriz de cadenas de caracteres como entrada para el parámetro Variable . La matriz define varias variables SQLCMD. $inicia sesión en la instrucción SELECT que identifica las variables SQLCMD se escapan mediante el carácter back-tick (').

Ejemplo 4: Invocar un script y pasar variables desde el motor de base de datos SQL

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

Este comando usa Set-Location para navegar a la ruta de acceso del proveedor de SQL Server Windows PowerShell para una instancia del motor de SQL Database. A continuación, llama a Get-Item para recuperar un objeto sql Management Object Server para su uso como parámetro ServerInstance de Invoke-Sqlcmd.

Ejemplo 5: Ejecución de una consulta y visualización de la salida detallada

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

Este comando usa el Windows PowerShell parámetro Verbose para devolver la salida del mensaje del comando SQL PRINT.

Ejemplo 6: Invocación de un comando mediante una cadena posicional como entrada

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

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

Este comando usa una cadena posicional para proporcionar la entrada al parámetro Query . También muestra cómo Invoke-Sqlcmd usa la ruta de acceso actual para establecer el contexto de la base de datos en AdventureWorks2014.

Parámetros

-AbortOnError

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-ConnectionTimeout

Tipo:Int32
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Database

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-DedicatedAdministratorConnection

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-DisableCommands

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-DisableVariables

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-EncryptConnection

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-ErrorLevel

Tipo:Int32
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-HostName

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-IgnoreProviderContext

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-IncludeSqlUserErrors

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-InputFile

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-MaxBinaryLength

Tipo:Int32
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-MaxCharLength

Tipo:Int32
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-NewPassword

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-OutputSqlErrors

Tipo:Boolean
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Password

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Query

Tipo:String
Posición:1
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-QueryTimeout

Tipo:Int32
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-ServerInstance

Tipo:PSObject
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

-SeverityLevel

Tipo:Int32
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-SuppressProviderContextWarning

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Username

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Variable

Tipo:String[]
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

Entradas

PSObject

Salidas

Tabla con formato