Invoke-Sqlcmd

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

Syntax

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ConnectionTimeout

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Database

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DedicatedAdministratorConnection

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DisableCommands

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DisableVariables

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EncryptConnection

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ErrorLevel

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HostName

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IgnoreProviderContext

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IncludeSqlUserErrors

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputFile

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaxBinaryLength

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaxCharLength

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-NewPassword

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-OutputSqlErrors

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Password

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Query

Type:String
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-QueryTimeout

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ServerInstance

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-SeverityLevel

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SuppressProviderContextWarning

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Username

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Variable

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Entradas

PSObject

Salidas

Tabla con formato