2012-03-07 16 views
11

Tenemos varios scripts SQL, que se generan a partir del modelo de entidad y deben ejecutarse en el orden correcto + hay varios scripts de relleno, que insertan algunos datos de prueba en el DB.¿Cómo incluir un archivo sql en un archivo sql? MS SQL

ahora tengo que abrir cada uno de los guión en el estudio visual en el orden correcto y haga clic en ejecutar SQL (ctrl cambio E)

¿Hay una manera de crear algo así como Master.sql y por dentro me gustaría utilizar algunos incluyen Algo como:

BEGIN TRANSACTION 

ImportOrInclude myDB1.sql 
ImportOrInclude myDB2.sql 
... 

COMMIT 

Necesito que esto solo se ejecute desde Visual Studio, esto no será parte de la aplicación en sí.

¿Cómo hacer eso?

Editar

he encontrado que hay algo llamado Scripts SQLCMD que puede importar archivos SQL http://msdn.microsoft.com/en-us/library/aa833281%28v=vs.80%29.aspx

Pero mi pregunta es entonces cómo conseguir ruta del directorio de la solución actual en el : r comando

EDITAR 2

Así que encontré cómo hacerlo, no perfecto, pero funcionando. Lo malo es que $ (SolutionDir) no se carga desde las variables VS, por lo que debe configurarlo manualmente. Este código está destinado a ser ejecutado en el estudio visual:

-- turn on in menu: Data -> Transact SQL editor -> SQL CMD mode 
-- set this to path where the .sln file is. 
:setvar SolutionDir C:\_work\projectname\ 

:!! echo $(SolutionDir)Maa.EntityModel.All\DbWEntityModel.edmx.sql 
:r $(SolutionDir)Maa.EntityModel.All\DbWEntityModel.edmx.sql 
go 

:!! echo $(SolutionDir)Maa.EntityModel.All\DblQEntityModel.edmx.sql 
:r $(SolutionDir)Maa.EntityModel.All\DbQEntityModel.edmx.sql 
go 

Respuesta

14

Use sqlcmd utility.

extracto que puede encontrar interesante:

-i input_file[,input_file2...] 

Identifica el archivo que contiene un lote de instrucciones SQL o procedimientos almacenados. Se pueden especificar varios archivos que se leerán y procesarán en orden. No use ningún espacio entre los nombres de archivo. sqlcmd primero verificará si existen todos los archivos especificados. Si uno o más archivos no existen, sqlcmd saldrá.

Ejemplo:

sqlcmd -dDataBaseName -E -Stcp:ServerName\instancename -imaster.sql 

Master.sql:

:r file1.sql 
:r file2.sql 
+0

gracias, pero -i no funciona. solamente: r –

+0

Claro que sí, acabo de probarlo. –

+0

Intenté usar el comando sql incluido en Visual Studio, y funciona de manera diferente –

0

Uso del Business Intelligence Development Studio que viene con SQL Server para hacer esto. Crea un nuevo paquete de SSIS. Dentro de este paquete, cree varios Execute SQL Tasks en Control Flow para cada archivo que tenga y configure SQLSourceType en FileConnection y elija su archivo.

Cuestiones relacionadas