我们有两个软件项目都与一个数据库进行通信。现在SQL更新都是在数据库上完成的,它依赖开发人员确保独立更新两组项目以使用最新的数据库模型。使这些事情变得更糟,两个项目都在不同的源控制存储库中的单独解决方案中。
虽然我承认这是一个可怕的情况,但我继承了这种情况,而我的长期目标是在两个应用程序集共享的一个共同项目中整合和共享它们之间的(大量)重复逻辑。由于各种原因,由于关键的截止日期即将到来并且需要迭代地组合它们并将其与其他开发人员安排在一起,以便不会过多地中断工作,因此现在不可能直接进入该目标。
记住这一点,我真的希望使用SSDT至少开始将数据库结构置于源代码控制之下并使其更易于管理,因为我将要做很多数据库更改。
此方案中SSDT的问题是您只能从数据库导入一次。之后,该选项显示为灰色且不可用,这显然是SSDT的设计决定,因为它已在MSDN文档中明确列出。
有没有简单的方法来更新我的SSDT项目而不需要修改当前项目并在每次有人对数据库结构进行更改时重新创建它?
答案 0 :(得分:7)
首先是你的权利,这是一个可怕的情况,所以长期改善它的工作!
您可以做两件事,首先您可以使用SSMS“Generate Scripts”导出所有对象,然后使用SSDT中的导入从脚本导入 - 这不是灰色的。
您可以做的第二件事是使用SSDT中的模式比较手动进行更改,您可以将数据库设置为源和项目作为目标,并选择删除,更新和导入的内容。
版
答案 1 :(得分:2)
它的回答有点迟缓。我正在使用VS2017数据库项目,我已经通过比较本地数据库与数据库项目完成此任务,一旦比较结束,您可以通过更新按钮更新数据库
步骤1右键单击数据库项目,然后单击架构比较项。
步骤2选择目标 - >选择数据库连接选项
步骤3更改源和目标
答案 2 :(得分:0)
我将使用比较解决方案:
选择模式比较并将数据库作为源和数据库项目作为目标,然后比较和更新
答案 3 :(得分:0)
新建一个临时数据库项目(在TFS外部)并导入所有对象。 签出Database项目(在TFS内部),然后将新的临时Database Project中的所有文件夹(不包括BIN,OBJ文件夹)复制并粘贴到Database Project中(在TFS中)并签入。这是将最新的DB对象放入其中的方法TFS无需重复。 如果希望在复制/粘贴操作中有新文件,则新文件应包含在数据库项目中。 删除临时数据库项目文件夹。 每当您要将所有数据库对象更新为TFS时,都需要执行此过程。
这是一种解决方法,它可以解决此文件复制问题。