【发布时间】:2012-03-07 09:58:25
【问题描述】:
我们有几个从实体模型生成的 SQL 脚本。它们需要按特定顺序运行。此外,还有几个填充脚本可以将测试数据插入数据库。
目前我需要在 Visual Studio 中打开每个脚本并通过单击Execute(ctrl shift E)以正确的顺序执行它们。
有没有办法创建像Master.sql 这样的脚本,其中包含如下内容:
BEGIN TRANSACTION
ImportOrInclude myDB1.sql
ImportOrInclude myDB2.sql
...
COMMIT
这仅需要在 Visual Studio 中运行,不会成为应用程序本身的一部分。
如何做到这一点?
编辑 1
我发现有一个叫做 SQLCMD Scripts 的东西可以导入 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
【问题讨论】:
标签: sql-server visual-studio tsql