2011-11-01 25 views
6

Quiero ser capaz de tener un grupo de diferentes scripts de crear tablas guardados y almacenados por separado.Microsoft SQL Server Management Studio ejecutando script desde dentro de un script

Para compilar toda la base de datos, tendría un archivo .sql maestro que llama a todas las secuencias de comandos en orden para que todas las claves externas en las tablas se creen en el orden correcto.

También podría hacer una secuencia de comandos para eliminar toda la estructura de la tabla soltándolos todos en el orden inverso.

¿Hay alguna manera de hacerlo?

Respuesta

13

Usando el comando oscura r: SQLCMD:

: r < nombre del archivo>

Analiza declaraciones adicionales Transact-SQL y sqlcmd comandos desde el archivo especificado por en la caché comunicado.

Di tus crear scripts son createT1.sql y createT2.sql entonces su maestro .sql archivo sería algo así como:

create database foo; 
go 

use foo; 
go 

:r createT1.sql 
:r createT2.sql 
go 

Esta sintaxis trabaja en SSMS así, siempre y cuando se habilita el modo SQLCMD, ver Editing SQLCMD Scripts with Query Editor . Además, la biblioteca dbutilsqlcmd admite la extensión :r si desea incrustar esto en su aplicación.

1

Desde que puso SSMS derecho en el título de su pregunta, voy a suponer que usted quiere ser capaz de hacer esto a partir de ahí.

Puede ejecutar SSMS en modo SQLCMD. Esto debería darte mucha más flexibilidad. Puede ver una demostración rápida de here o buscar más información en Microsoft's website.

Para una funcionalidad de línea de comandos simple, yo personalmente iría con un script de Powershell. Puede agregar los cmdlets de Microsoft SQL para que pueda conectarse a un servidor SQL o puede implementar uno con SMO o ir con una solución de terceros, como el código abierto SQLPSX.

+0

wow estas respuestas fueron fantásticas muchas gracias a todos! definitivamente estará publicando aquí mucho si todas las respuestas son tan buenas jajaja ^. ^ – chilleo

Cuestiones relacionadas