在部署后将已知值插入VS 2010数据库项目的正确方法是什么?

时间:2011-08-17 10:09:02

标签: visual-studio-2010 database-project

我尝试了一些不同的谷歌搜索,但找不到任何解决此问题的最佳做法或教程。

这是我第一次使用VS数据库项目。我已经导入了一个现有的数据库(一切都很好),现在我想在部署后填充一些表。

有一个Script.PostDeployment.sql文件,其中包含以下标题:

/*
Post-Deployment Script Template                         
--------------------------------------------------------------------------------------
 This file contains SQL statements that will be appended to the build script.       
 Use SQLCMD syntax to include a file in the post-deployment script.         
 Example:      :r .\myfile.sql                              
 Use SQLCMD syntax to reference a variable in the post-deployment script.       
  Example:      :setvar TableName MyTable                           
           SELECT * FROM [$(TableName)]                 
 --------------------------------------------------------------------------------------
*/

我想知道从最后三行是否有一些预期的方法来使用变量编写这些脚本而不仅仅是纯T-SQL语法?

我应该写作

INSERT INTO [dbo].[BlackAdder] VALUES ('edmund')
INSERT INTO [dbo].[BlackAdder] VALUES ('baldrick')

setvar [dbo].[BlackAdder] BlackAdder
INSERT INTO [$(BlackAdder)] VALUES ('edmund')
INSERT INTO [$(BlackAdder)] VALUES ('baldrick')

后者是否允许进行某种编译时检查,以便setvar无法解析[dbo].[BlackAdder]项目会给我一些错误?

1 个答案:

答案 0 :(得分:3)

如果您打开项目Properties文件夹,然后点击Database.sqlcmvars,您会看到已定义3个变量$(DefaultDataPath), $(DtabaseName)$(DefaultLogPath)并且可以定义您的拥有这里。

setvar将是另一种方式:

:setvar BlackAdder [dbo].[BlackAdder] 

但理想情况下,您可以在Database.sqlcmvars中定义这些内容。

预期用途是通过定义SQLCMD变量并将其包含在预部署和部署后脚本中,将数据库项目部署到多个环境中。