有没有办法在SQL种子脚本中获取Visual Studio环境变量?

时间:2013-07-24 20:30:19

标签: sql visual-studio

有没有办法在T-sql播种脚本中访问visual studio environment variables,例如$(SolutionDir)?基本上,我有一套播种脚本,但我尽量避免引用硬编码路径,如C:\ projects ** \ seeding.sql,相反,我想使用$(SolutionDir)Seeding.sql

1 个答案:

答案 0 :(得分:2)

以下是在MSDN的数据库项目中使用SQL中的项目变量的一般过程:

How to: Define Variables for Database Projects

这取决于您正在使用的Visual Studio版本(以及您是否正在使用数据库项目 - 强烈推荐),但一般的想法是您可以将一些项目变量指定为SQLCMD变量,构建一个使用这些变量的SQLCMD脚本,当您运行构建时,系统将使用SQLCMD来调用您的脚本,根据需要应用变量来运行您的脚本。

更重要的是,数据库项目推荐的“种子”脚本和其他构建后工件的做法是将一个SQL脚本指定为构建后脚本,并让它使用SQLCMD语法来调用其他.sql脚本文件

所以在我的项目中(例如)我在Scripts文件夹中有这个SQL脚本:

:r .\PopulateNumbersTable.sql
:r .\Insert.Dimension.Date.sql
:r .\FillInMetaData.sql
:r .\Permissions.sql

然后调用在SQLCMD模式下运行的每个脚本(也在使用相对路径的文件夹中)。因此,在PopulateNumbersTable.sql中,我将数字表的最大值设置为SQLCMD变量,因此当脚本在后期构建中运行时,它使用该值。

无论如何,查看SQLCMD和VS数据库项目,它基本上涵盖了你正在寻找的东西,它非常灵活,(对我而言)很容易理解。