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

Jiř*_*ník 13 t-sql sql-server visual-studio

我们有几个SQL脚本,它们是从实体模型生成的,它们需要以正确的顺序运行+有几个填充脚本,它们将一些测试数据插入到DB中.

现在我需要以正确的顺序打开visual studio中的每个脚本,然后单击执行SQL(ctrl shift E)

有没有办法创建像Master.sql和内部我想使用一些包含.就像是:

BEGIN TRANSACTION

ImportOrInclude myDB1.sql
ImportOrInclude myDB2.sql
...

COMMIT
Run Code Online (Sandbox Code Playgroud)

我只需要从visual studio运行它,这不会是应用程序本身的一部分.

怎么做?

编辑

我发现有一些名为SQLCMD的脚本可以导入SQL文件 http://msdn.microsoft.com/en-us/library/aa833281%28v=vs.80%29.aspx

但我的问题是如何将当前解决方案的目录路径放入:r命令

编辑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
Run Code Online (Sandbox Code Playgroud)

Nik*_*vić 14

使用sqlcmd实用程序.

提取你可能会觉得有趣:

-i input_file[,input_file2...]
Run Code Online (Sandbox Code Playgroud)

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

例:

sqlcmd -dDataBaseName -E -Stcp:ServerName\instancename -imaster.sql
Run Code Online (Sandbox Code Playgroud)

Master.Sql:

:r file1.sql
:r file2.sql
Run Code Online (Sandbox Code Playgroud)