【发布时间】:2013-04-16 05:20:40
【问题描述】:
我有一个 SSDT 项目。发布新版本时,我还想发布/初始化数据库中的一些数据。可以使用 SSDT 完成吗?
【问题讨论】:
我有一个 SSDT 项目。发布新版本时,我还想发布/初始化数据库中的一些数据。可以使用 SSDT 完成吗?
【问题讨论】:
可以做到,但可能会很棘手。如果您在项目中设置了一个可用于“新”版本的变量,则可以将其作为一个部分放入您的部署后脚本中,该部分将运行一系列插入,但仅适用于该“新”类型。
正如 David 所提到的,更好的方法可能是使用 Red-Gate 的数据比较之类的东西,或者在创建数据库后运行脚本。可以在部署后脚本中执行此操作,但可能会很棘手。
这样的事情可能会奏效:
IF '$(DeployType)' = 'New'
BEGIN --"New" release scripts
PRINT 'Post-Deploy Scripts for release.'
:r .\InsertScript1.sql
:r .\InsertScript2.sql
--etc
END --"New" release scripts
【讨论】:
这在 SSDT 中是不可能的。 current guidance 是使用后部署脚本。
Redgate ReadyRoll 提供了许多 SSDT 用户熟悉的体验,但改进了 static data management 以及许多其他改进。
【讨论】:
当它们被放置在项目的特定子文件夹中时,我们会自动包含合并脚本。
【讨论】:
根据您的工作,表值的 custructors 可能值得一看:
SELECT *
FROM
(VALUES
(101, 'Bikes'),
(102, 'Accessories'),
(103, 'Clothes')
) AS Category(CategoryID, CategoryName);
这些很容易被 SSDT 传输和比较。
矿石信息见https://www.simple-talk.com/sql/sql-training/table-value-constructors-in-sql-server-2008/
【讨论】: