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
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
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
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
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.