我尝试了一些不同的谷歌搜索,但找不到任何解决此问题的最佳做法或教程。
这是我第一次使用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]
项目会给我一些错误?
答案 0 :(得分:3)
如果您打开项目Properties
文件夹,然后点击Database.sqlcmvars
,您会看到已定义3个变量$(DefaultDataPath),
$(DtabaseName)
和$(DefaultLogPath)
并且可以定义您的拥有这里。
setvar将是另一种方式:
:setvar BlackAdder [dbo].[BlackAdder]
但理想情况下,您可以在Database.sqlcmvars
中定义这些内容。
预期用途是通过定义SQLCMD变量并将其包含在预部署和部署后脚本中,将数据库项目部署到多个环境中。