2017-04-12 27 views
0

我们的解决方案由两个SQL数据库项目:我可以指定DACPAC只能在数据库存在或不存在时才运行吗?

  • model_create项目中包含“动态”的对象,我们不认为只有创建一个新的运行时和部署后的核心架构一部分的脚本数据库。 model_create参考model_core项目。
  • model_core项目包含核心数据库对象并更新随时间变化的参考数据。

有什么办法来指定model_create如果数据库不存在,必须创建只能运行?这些脚本已经是幂等的,不会插入模糊,但有数以万计的插入忽略。

有什么方法可以指定model_core不能创建一个新的数据库,因为它缺少一些我们只想插入一次的启动数据?有点像发布配置文件设置的“反复创建新数据库”。

回答

0

我对你正在做的事情有点困惑,目前还不清楚哪个项目引用了哪个,那么说post部署脚本只能从部署的dacpac运行 - 任何引用的dacpacs都不会获得它们发布部署脚本运行 - 这有帮助吗?

听起来,如果你有一个脚本,最好是在ssdt部署之外运行脚本。我仍然将它保存在ssdt项目中,但只是部署主项目,然后自行部署脚本。

另一种方法是使这些脚本具有识别性,在使用脚本之前我已经完成了它,如果您知道c#可以获取单个插入内容并对它们执行某些操作。什么取决于你的设置是什么。

希望它有帮助!

埃德

+0

是的,我们要把全部的“一次性”的东西隔离开到model_create项目创建一个新的数据库时应该只运行。这包括我们只插入一次的批量数据和一些“动态”表。这些表格包含根据用户输入添加的列。我知道这不是理想的,但这是它存在的情况。将这些表保留在“核心”项目中不断删除自定义列,因此我决定将这些“动态”对象分隔到“创建”项目中,以便它们仅在创建新数据库时运行。 – flipdoubt

相关问题