Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Invoke-Sqlcmd es un cmdlet de SQL Server que ejecuta scripts que contienen instrucciones de los lenguajes (Transact-SQL y XQuery) y los comandos compatibles con la utilidad sqlcmd .
Uso de Invoke-Sqlcmd
El cmdlet Invoke-Sqlcmd le permite ejecutar los archivos de script sqlcmd en un entorno de Windows PowerShell. Gran parte de lo que puede hacer con sqlcmd también se puede hacer mediante Invoke-Sqlcmd.
Este es un ejemplo de llamada a Invoke-Sqlcmd para ejecutar una consulta simple, similar a especificar sqlcmd con las opciones -Q y -S :
Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance "MyComputer\MyInstance"
Este es un ejemplo de llamada a Invoke-Sqlcmd, especificando un archivo de entrada y canalizando la salida a un archivo Esto es similar a especificar sqlcmd con las opciones -i y -o :
Invoke-Sqlcmd -InputFile "C:\MyFolder\TestSQLCmd.sql" | Out-File -FilePath "C:\MyFolder\TestSQLCmd.rpt"
Este es un ejemplo del uso de una matriz de Windows PowerShell para pasar varias variables de scripting sqlcmd a Invoke-Sqlcmd. Los caracteres "$" que identifican las variables de scripting sqlcmd en la instrucción SELECT se han escapado mediante el carácter de escape "`" de comillas invertidas de PowerShell.
$MyArray = "MyVar1 = 'String1'", "MyVar2 = 'String2'"
Invoke-Sqlcmd -Query "SELECT `$(MyVar1) AS Var1, `$(MyVar2) AS Var2;" -Variable $MyArray
Este es un ejemplo del uso del proveedor de SQL Server para Windows PowerShell para ir a una instancia del motor de base de datos y, a continuación, usar el cmdlet Get-Item de Windows PowerShell para recuperar el objeto SMO Server para la instancia y pasarlo a Invoke-Sqlcmd:
Set-Location SQLSERVER:\SQL\MyComputer\MyInstance
Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance (Get-Item .)
El parámetro -Query es posicional y no tiene que denominarse. Si la primera cadena que se pasa a Invoke-Sqlcmd: no tiene nombre, se trata como el parámetro -Query.
Invoke-Sqlcmd "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance "MyComputer\MyInstance"
Contexto de directorio en Invoke-Sqlcmd
Si no usa el parámetro -Database, el contexto de la base de datos para Invoke-Sqlcmd se establece por la ruta activa en el momento de llamar al cmdlet.
Ruta | Contexto de base de datos |
---|---|
Comienza con un dispositivo distinto al SQLSERVER: | Base de datos predeterminada para el identificador de inicio de sesión en la instancia predeterminada del equipo local. |
SQLSERVER:\SQL | Base de datos predeterminada para el identificador de inicio de sesión en la instancia predeterminada del equipo local. |
SQLSERVER:\SQL\ComputerName | Base de datos predeterminada para el identificador de inicio de sesión en la instancia predeterminada del equipo especificado. |
SQLSERVER:\SQL\NombreDeEquipo\NombreDeInstancia | Base de datos predeterminada para el identificador de inicio de sesión de la instancia especificada en el equipo especificado. |
SQLSERVER:\SQL\ComputerName\InstanceName\Databases | Base de datos predeterminada para el identificador de inicio de sesión de la instancia especificada en el equipo especificado. |
SQLSERVER:\SQL\ComputerName\InstanceName\Databases\DatabaseName | Base de datos especificada en la instancia especificada del equipo especificado. Esto también se aplica a rutas de acceso más largas, como una ruta de acceso que especifica el nodo Tablas y columnas dentro de una base de datos. |
Por ejemplo, supongamos que la base de datos por defecto de la cuenta de Windows en la instancia predeterminada del equipo local es master. A continuación, los siguientes comandos devolverían el maestro:
Set-Location SQLSERVER:\SQL
Invoke-Sqlcmd "SELECT DB_NAME() AS DatabaseName;"
Los siguientes comandos devolverían AdventureWorks2012:
Set-Location SQLSERVER:\SQL\MyComputer\DEFAULT\Databases\AdventureWorks2012\Tables\Person.Person
Invoke-Sqlcmd "SELECT DB_NAME() AS DatabaseName;"
Invoke-Sqlcmd proporciona una advertencia cuando usa el contexto de la base de datos de rutas. Puede usar el parámetro -SuppressProviderContextWarning para desactivar el mensaje de advertencia. Puede usar el parámetro -IgnoreProviderContext para indicar a Invoke-Sqlcmd usar siempre la base de datos predeterminada para el inicio de sesión.
Comparación de Invoke-Sqlcmd y la utilidad sqlcmd
Invoke-Sqlcmd se puede usar para ejecutar muchos de los scripts que se pueden ejecutar mediante la utilidad sqlcmd . Sin embargo, Invoke-Sqlcmd se ejecuta en un entorno de Windows PowerShell que es diferente del entorno de la línea de comandos en el que se ejecuta sqlcmd. El comportamiento de Invoke-Sqlcmd se ha modificado para funcionar en un entorno de Windows PowerShell.
No todos los comandos sqlcmd se implementan en Invoke-Sqlcmd. Los comandos que no se implementan incluyen lo siguiente: :!!, :connect, :error, :out, :ed, :list, :listvar, :reset, :perftrace e :serverlist.
Invoke-Sqlcmd no inicializa el entorno sqlcmd ni las variables de scripting, como SQLCMDDBNAME o SQLCMDWORKSTATION.
Invoke-Sqlcmd no muestra mensajes, como la salida de instrucciones PRINT, a menos que especifique el parámetro común Windows PowerShell -Verbose . Por ejemplo:
Invoke-Sqlcmd -Query "PRINT N'abc';" -Verbose
No todos los parámetros sqlcmd son necesarios en un entorno de PowerShell. Por ejemplo, Windows PowerShell da formato a todos los resultados de los cmdlets, por lo que los parámetros sqlcmd que especifican opciones de formato no se implementan en Invoke-Sqlcmd. En la tabla siguiente se muestra la relación entre los parámetros Invoke-Sqlcmd y las opciones de sqlcmd :
Descripción | opción sqlcmd | parámetro Invoke-Sqlcmd |
---|---|---|
Nombre del servidor y de la instancia. | -S | -ServerInstance |
Base de datos inicial que se va a usar. | -d | -Base de datos |
Ejecute la consulta especificada y salga. | -Q | -Consulta |
ID de inicio de sesión de autenticación del servidor SQL. | -U | -Nombre de usuario |
Contraseña de autenticación de SQL Server. | -P | -Contraseña |
Definición de variable. | -v | -Variable |
Intervalo de tiempo de espera de consulta. | -t | -TiempoDeEsperaDeConsulta |
Detener la ejecución en un error | -b | -AbortOnError |
Conexión de administrador dedicada. | -Un | -DedicatedAdministratorConnection |
Deshabilite los comandos interactivos, el script de inicio y las variables de entorno. | -X | -DeshabilitarComandos |
Deshabilitar la sustitución de variables. | -X | -DesactivarVariables |
Nivel mínimo de gravedad que debe notificarse. | -V | -SeverityLevel |
Nivel mínimo de error a notificar. | -M | -ErrorLevel |
Intervalo de tiempo de espera de inicio de sesión. | -l | -ConnectionTimeout |
Nombre de host. | -H | -HostName |
Cambiar contraseña y salir. | -Z | -NuevaContraseña |
Archivo de entrada que contiene una consulta | -i | -Archivo de Entrada |
Longitud máxima de la salida de caracteres. | -w | -MaxCharLength -Longitud máxima de caracteres |
Longitud máxima de la salida binaria. | -w | -MaxBinaryLength |
Conéctese mediante el cifrado SSL. | Sin parámetro | -EncryptConnection |
Mostrar errores | Sin parámetro | -OutputSqlErrores |
Envía mensajes a stderr. | -r | Sin parámetro |
Usar la configuración regional del cliente | -R | Sin parámetro |
Ejecute la consulta especificada y siga ejecutándose. | -q | Sin parámetro |
Página de código que se va a usar para los datos de salida. | -f | Sin parámetro |
Cambiar una contraseña y seguir funcionando | -Z | Sin parámetro |
Tamaño del paquete | -un | Sin parámetro |
Delimitador de columnas. | -s | Sin parámetro |
Control de encabezados de salida | -h | Sin parámetro |
Especificar caracteres de control | -k | Sin parámetro |
Ancho de pantalla de longitud fija | -Y | Sin parámetro |
Ancho de pantalla variable | -y | Sin parámetro |
Entrada de eco | -E | Sin parámetro |
Habilitación de identificadores entre comillas | -Yo | Sin parámetro |
Quitar espacios finales | -w | Sin parámetro |
Enumerar instancias | -L | Sin parámetro |
Formatear la salida como Unicode | -U | Sin parámetro |
Imprimir las estadísticas. | -p | Sin parámetro |
Fin del comando | -c | Sin parámetro |
Conexión mediante la autenticación de Windows | -E | Sin parámetro |
Véase también
Utilizar los cmdlets del motor de base de datos
Utilidad sqlcmd
Usar la utilidad sqlcmd