Solución:
Investigué un poco más, así que aquí está mi comprensión de esto para extender lo que se ha escrito hasta ahora:
¿Qué es SQLCMD?
SQLCMD.exe es una utilidad de consola incluida en la instalación de SQL Server 2005 y superior. Por lo general, puede encontrarlo en una ruta como c:Program FilesMicrosoft SQL Server100ToolsBinnSQLCMD.EXE
.
Es un entorno de scripting simple que permite la automatización de tareas relacionadas con el servidor SQL. Por ejemplo, puede escribir y ejecutar una secuencia de comandos que iniciará sesión en una instancia específica de SQL Server, ejecutará secuencias de comandos desde un directorio determinado en esta conexión y almacenará la salida en un archivo específico.
Invoke-Sqlcmd
cmdlet se introdujo con SQL Server 2008 como un medio para reemplazar esta herramienta con un enfoque estandarizado basado en Powershell, preservando la mayor parte de la sintaxis y funcionalidad originales.
¿Qué es el modo SQLCMD en SSMS?
En SSMS, Modo SQLCMD es un modo de ejecución de script que simula el entorno sqlcmd.exe y, por tanto, acepta algunos comandos que no forman parte del lenguaje T-SQL. diferente a sqlcmd.exe
, contacta con la base de datos usando SqlClient (de la misma manera que SSMS), no ODBC proveedor de datos, por lo que en algunos aspectos puede tener un comportamiento diferente al sqlcmd.exe
.
La ejecución de scripts en modo SQLCMD permite utilizar comandos típicos de sqlcmd.exe
medio ambiente. Sin embargo, no hay IntelliSense ni soporte de depuración para el modo SQLCMD, por lo que mantener scripts que combinen T-SQL limpio con código específico de SQLCMD puede ser complicado. Por lo tanto, debe usarse solo cuando sea necesario.
Caso de uso de ejemplo
Supongamos que una empresa tiene una convención de nomenclatura para las bases de datos que incluyen entorno en el nombre, por ejemplo: MyDb_Pinchar, MyDb_Prueba, MyDb_Dev. Esta convención se puede utilizar para minimizar la posibilidad de errores.
Cuando un desarrollador escribe un script T-SQL, tendrá que ejecutarse en diferentes entornos en el proceso de implementación / prueba, lo que requeriría muchas versiones del código:
SELECT *
FROM [MyDb_Dev].[dbo].[MyTable1] -- MyDb_Dev -> MyDb_Test -> MyDb_Prod
En su lugar, podemos asumir que el nombre de la base de datos se proporcionará como una variable SQLCMD en el proceso de implementación y que se implementará exactamente el mismo archivo en todos los entornos:
-- :setvar databaseName "MyDb_Dev" -- uncomment for testing in SSMS
SELECT *
FROM [$(databaseName)].[dbo].[MyTable1]
(en este ejemplo simple, el nombre de la base de datos podría omitirse por completo, pero si tiene uniones entre bases de datos, es necesario usar el nombre de la base de datos)
Exactamente como suena.
Es un modo que le permite crear scripts SQLCMD.
Desde MSDN: edición de scripts SQLCMD con el editor de consultas:
Para utilizar el Editor de consultas del motor de base de datos para escribir o editar scripts SQLCMD, debe habilitar el modo de scripts SQLCMD.
En SQL Server Management Studio, configure esto a través del menú Consulta (Consulta -> Modo SQLCMD).
“Utiliza scripts SQLCMD cuando tiene que procesar comandos del sistema Windows y sentencias Transact-SQL en el mismo script”.
“De forma predeterminada, el modo SQLCMD no está habilitado en el Editor de consultas. Puede habilitar el modo de secuencias de comandos haciendo clic en el icono Modo SQLCMD en la barra de herramientas o seleccionando Modo SQLCMD en el menú Consulta”.
Referencia: MSDN