【问题标题】:Is there way to get Visual Studio environment variable in SQL seeding script?有没有办法在 SQL 种子脚本中获取 Visual Studio 环境变量?
【发布时间】:2013-07-24 20:30:19
【问题描述】:

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

【问题讨论】:

  • 您使用的是什么版本的 Visual Studio?
  • 当您的项目在不存在这些变量的 Visual Studio 之外运行时会发生什么? (或者由根本没有 VS 的用户?)将位置基于与您的应用程序位置相关的某个位置不是更好吗?
  • 应该可以,只要我没有硬编码物理路径。
  • 什么应该起作用?使用不存在的环境变量?还是使用基于应用程序位置的位置? (当您向特定人员发表评论时,请使用@UserName,其中“UserName”是您要回复的人,以便他们收到通知。您会自动收到通知,因为评论是针对您的问题的。)跨度>
  • 嗨,Ken,感谢您的输入,使用基于应用程序定位工作的位置。作为一个非母语人士,有时我确实很难清楚地表达自己。

标签: sql visual-studio


【解决方案1】:

以下是在 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 中,我将 numbers 表的最大值设置为 SQLCMD 变量,因此当脚本在后期构建中运行时,它会使用该值。

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

【讨论】:

    猜你喜欢
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 2019-08-14
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 2019-07-10
    • 2015-05-11
    相关资源
    最近更新 更多