我们有一些从实体模型生成的SQL脚本,需要按特定顺序运行。此外,还有几个填充脚本将测试数据插入到数据库中。
目前,我需要在Visual Studio中打开每个脚本,并通过单击“执行”(ctrl shift E)以正确的顺序执行它们。
是否有办法创建一个类似于Master.sql的脚本,其中包含如下内容的包含指令:
目前,我需要在Visual Studio中打开每个脚本,并通过单击“执行”(ctrl shift E)以正确的顺序执行它们。
是否有办法创建一个类似于Master.sql的脚本,其中包含如下内容的包含指令:
BEGIN TRANSACTION
ImportOrInclude myDB1.sql
ImportOrInclude myDB2.sql
...
COMMIT
这只是在 Visual Studio 中运行所需的,并不是应用程序本身的一部分。
如何实现这一点?
编辑1
我发现有一种叫做 SQLCMD 脚本的东西可以导入 SQL 文件:http://msdn.microsoft.com/en-us/library/aa833281%28v=vs.80%29.aspx
但我的问题是如何将当前解决方案的目录路径传递到:r命令中。
编辑2
所以,我找到了方法,虽然不完美,但它确实有效。缺点是 $(SolutionDir) 没有从 Visual Studio 变量中加载,因此您需要手动设置它。 这段代码旨在在 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