Tengo un conjunto de scripts que deben ejecutarse en un cierto orden. Me gustaría crear un "archivo maestro" que enumere todos los otros archivos y su orden correcto. Básicamente, como un archivo de inclusión de C ++ o ASP / VBScript.
Tengo un conjunto de scripts que deben ejecutarse en un cierto orden. Me gustaría crear un "archivo maestro" que enumere todos los otros archivos y su orden correcto. Básicamente, como un archivo de inclusión de C ++ o ASP / VBScript.
Respuestas:
Si está utilizando SQLCMD , puede usar :r FileName
para incluir un archivo .sql separado.
: r FileName
Analiza sentencias T-SQL adicionales y comandos SQLCMD del archivo especificado por FileName en el caché de sentencias. FileName se lee en relación con el directorio de inicio de Visual Studio. El archivo se lee y se ejecuta después de encontrar un terminador por lotes. Puede emitir múltiples: r comandos. El archivo puede incluir cualquier comando SQLCMD, incluido el terminador por lotes que se define en Herramientas, Opciones. Puede usar: r en un script previo o posterior al despliegue para incluir otros scripts.
En el sentido de los antiguos preprocesadores C definitivamente no
Si tiene un conjunto de archivos con rutas absolutas dadas, que desea incluir en un orden incondicional, puede usar la herramienta de línea de comando sqlcmd o usar SSMS en sqlcmdmode como lo mencionan @mfredrickson y @Marian.
Pero si desea rutas relativas o inclusiones condicionales, debe usar un contenedor que llame a sqlcmd (o uno de sus predecesores obsoletos isql u osql).
Actualmente en mi trabajo en esta situación, estoy revisando y extendiendo vbs antiguos y código hta. No estoy completamente feliz, pero es una decisión pragmática. Está funcionando y el usuario final está en casa con la hta GUI y no se requiere instalación de software adicional.
Para un diseño nuevo, comenzaría a pensar en usar WPF y PowerShell para ajustar las llamadas de sqlcmd, pero con nuestros clientes actuales no puedo presumir la presencia de PowerShell V2.
Incluso en épocas anteriores, escribimos lotes simples de cmd para este propósito, algunos de ellos todavía en uso.
Supongo que hay herramientas actuales, especialmente aquellas dirigidas a flujos de trabajo, que podrían ser adecuadas aquí. No estoy familiarizado con eso.
Junto con el modo SQLCMD en Management Studio, también puede usar un archivo por lotes para usarlo como archivo maestro para organizar y llamar a todos sus archivos sql utilizando la utilidad SQLCMD .
El modo SQLCMD es una simulación del uso de la utilidad dentro del Management Studio, por lo que no hay una gran diferencia entre los modos. Excepto que a veces prefiero ejecutar lotes (no más apertura de M Studio ... cargando db correcto ... etc.). Prefiero configurar todo en el lote, incluidos los archivos de salida.
Estoy de acuerdo, un preprocesador T-SQL es muy necesario. Desarrollé el mío en C #, lo que me llevó como una hora. Además del control sobre el orden de ejecución de los scripts SQL, también me permite tener macros que parecen UDF escalares y son convenientes de usar, pero funcionan tan rápido como los UDF en línea.
Me gusta la respuesta de bernd_k . Dependiendo de cómo nombró sus scripts, como incluir un número, SQL Server PowerShell (SQLPS) podría usarse si estuviera ejecutando SQL Server 2008 o superior. Entonces, incluso si estuviera utilizando SQL 2005, podría utilizar PowerShell y SMO para 2005.
Nota al margen: creo que SQLCMD finalmente se incluirá en la lista depreciada y se reemplazará con SQLPS, PowerShell.
También hay algunas otras opciones.
SQLCMD
hágamelo saber, porque la mayor parte de lo que encuentro es hacer referencia a PowerShell . Tampoco veo la referencia donde sqlcmd
se usa con SSDT, excepto tal vez para la comparación de esquemas, pero nunca uso los scripts generados.