有没有办法在T-sql播种脚本中访问visual studio environment variables,例如$(SolutionDir)?基本上,我有一套播种脚本,但我尽量避免引用硬编码路径,如C:\ projects ** \ seeding.sql,相反,我想使用$(SolutionDir)Seeding.sql
答案 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数据库项目,它基本上涵盖了你正在寻找的东西,它非常灵活,(对我而言)很容易理解。