Dib*_*Dib 6 database-project visual-studio seeding publish-profiles sql-server-data-tools
是否可以使用visual studio Sql Server数据工具数据库项目为不同的发布配置文件部署不同的种子数据集?
我们知道您可以使用部署后脚本部署种子数据.我们知道您可以使用发布配置文件工具部署到不同的环境.我们不知道的是如何将不同的种子数据部署到不同的环境中.
我们为什么要这样做?
有几种方法可以实现这一点,第一种方法是检查后部署脚本中的环境,例如..
if @@servername = 'dev_server'
begin
insert data here
end
Run Code Online (Sandbox Code Playgroud)
稍微更简洁的版本是为每个环境提供不同的脚本文件,并通过:r import sqlcmd脚本导入它们,以便您可以:
然后
if @@servername = 'dev_server'
begin
:r DevServer.sql
end
if @@servername = 'qa_server'
begin
:r QAServer.sql
end
Run Code Online (Sandbox Code Playgroud)
您需要确保.sql文件的路径是正确的,然后使用dacpac复制它们.
您不必使用@@ servername就可以使用sqlcmd变量并将它们传递给每个环境,这些环境再次比硬编码的服务器名称更清晰.
第二种方法是使dacpac情绪化以改变post delpoy脚本与您的环境特定的脚本,这是我的首选,并且作为CI构建的一部分最好,我的过程是:
我调用脚本PostDeploy.dev.sql,PostDeploy.Qa.sql等,并将Build操作设置为"None",或者将它们添加为"Script,Not in Build".
要替换部署后的脚本,您只需要使用.net Packaging API,或者对于一些示例,请查看我的Dir2Dac演示,该演示可以执行以下操作:
https://github.com/GoEddie/Dir2Dac
进一步来说:
https://github.com/GoEddie/Dir2Dac/blob/master/src/Dir2Dac/DacCreator.cs
var part = package.CreatePart(new Uri("/postdeploy.sql", UriKind.Relative), "text/plain");
using (var reader = new StreamReader(_postDeployScript))
{
reader.BaseStream.CopyTo(part.GetStream(FileMode.OpenOrCreate, FileAccess.ReadWrite));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2030 次 |
| 最近记录: |