在visual studio上更改存储过程并生成模式比较

时间:2016-10-20 15:08:04

标签: sql-server visual-studio sql-server-data-tools

我们在Visual Studio 2015中使用SQL Server 2014,我们有一个数据库项目和一个数据库。

一些程序员喜欢更新visual studio和管理工作室的其他程序。

我们遇到了一个问题,如果您从数据库创建db项目,则创建的所有文件,例如存储过程都是使用tfs中的CREATE生成的,这与sp保存在数据库中的方式相同。当我进行模式比较时,所有匹配。如果有人使用visual studio来改变一个sp,他需要更改放置ALTER的文件,这将允许开发人员从visual studio更新数据库中的sp。

现在,如果我再次从db到tfs进行模式比较,我将在tfs中添加一个新对象,因为数据库中有CREATE,而tfs中有ALTER。 我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

If someone use visual studio for altering one sp

这部分并不适合“标准”SSDT工作流程。 SSDT通常假设您要构建一个项目(使用或不使用TFS),然后使用“publish”立即更新整个数据库。

如果您需要从Visual Studio部署单个对象,则有一些选项,例如https://agilesql.club/Projects/SSDT-Dev-Pack中的“快速部署”。此扩展将允许您部署单个对象(某些类型)而不将CREATE更改为ALTER,但请记住,使用此类工具进行常规部署会产生许多好处(验证等) )首先使用SSDT。

答案 1 :(得分:1)

"如果有人使用visual studio更改一个sp,他需要更改放置ALTER的文件,这将允许开发人员从visual studio更新数据库中的sp。"

这是你出错的地方。您不能将SSDT数据库项目中的文件从CREATE更改为ALTER。如果要以连接方式(即在数据库上)更改对象,则有几个选项:

1)打开查询窗口(在SSMS中或从服务器对象资源管理器中)并执行ALTER(请注意,此ALTER只是执行而不保存在项目中)。然后,在数据库和项目之间运行Schema Compare,并将更改应用于项目。请注意,这不是SSDT支持/首选的工作流程。相反,它设计为通过更改CREATE文件脱机使用,但此模型不能在SSMS中工作。

2)你可以考虑在我工作的Redgate开发的ReadyRoll。这是Visual Studio中的数据库项目,但它支持连接的工作流,这意味着开发人员可以在VS或SSMS中对dev DB进行更改,并且可以通过鼠标单击将这些更改导回到数据库项目中。该选项的优点是能够在VS和SSMS中使用相同的开发方法。