如何在sql文件中包含sql文件? MS SQL

问题描述:

我们有几个SQL脚本,它们是从实体模型生成的,它们需要以正确的顺序运行+有几个填充脚本,它们将一些测试数据插入到数据库中。如何在sql文件中包含sql文件? MS SQL

现在我需要在正确的顺序Visual Studio中打开这些所有的脚本,然后单击执行SQL(CTRL移E)

有没有一种方法来创建类似Master.sql和里面我想用一些包括。像这样:

BEGIN TRANSACTION 

ImportOrInclude myDB1.sql 
ImportOrInclude myDB2.sql 
... 

COMMIT 

我需要这只从视觉工作室运行,这不会是应用程序本身的一部分。

如何做到这一点?

编辑

我发现有个东西叫SQLCMD脚本,可以导入SQL文件 http://msdn.microsoft.com/en-us/library/aa833281%28v=vs.80%29.aspx

但我的问题是,那么如何获取当前解决方案的目录路径进入: ř命令

编辑2

所以我发现如何去做,并不完美,但工作。 糟糕的是$(SolutionDir)没有从VS变量中加载,所以你需要手动设置它。 此代码是指在Visual Studio中运行:

-- 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 

Use sqlcmd utility

提取您可能会感兴趣:

-i input_file[,input_file2...] 

标识包含一批SQL语句或存储过程的文件。可以指定多个文件,这些文件将按顺序读取和处理。不要在文件名之间使用任何空格。 sqlcmd将首先检查是否存在所有指定的文件。如果一个或多个文件不存在,sqlcmd将退出。

例子:

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

Master.Sql:

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

谢谢你,但我不工作。只有:r – 2012-03-07 10:21:22

+0

确实如此,我刚刚测试过它。 – 2012-03-07 10:45:06

+0

我试图使用包含在visual studio中的sql命令,它以不同的方式工作 – 2012-03-07 10:52:28

使用随SQL Server来做到这一点的Business Intelligence Development Studio。创建一个新的SSIS包。在这个包里面,为每个文件在控制流中创建几个Execute SQL Tasks,并设置SQLSourceTypeFileConnection并选择你的文件。