什么是git与SQL Server的最佳实践

时间:2018-07-17 20:13:40

标签: sql-server git

我们有一个包含约1000个存储过程的SQL Server数据库。我们从未使用过git来保留该代码(好吧,我知道)。

现在,当我们有三个数据库开发人员而不是一个时,我们想开始做所有正确的事情,因此我们希望所有代码都保存在git中。

我们恳请就该如何做提供建议。

到目前为止,我们看到了两种策略:

1。。只有一个文件可以保留所有程序

看起来像

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID('my_procedure'))
BEGIN
    DROP PROCEDURE my_procedure
END

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].my_procedure ...

因此,运行此大文件将释放所有过程,并重新创建它们。

2。。每个存储过程中都有一个文件,与上面的操作相同

优点/缺点

第一种方法使我们拥有单个项目代码,您可以在其中始终看到更改任何过程的时间,原因和对象。因此,所有开发人员都会更改该单个文件并在冲突时合并。但是这种方法会在发布之日杀死所有PLANS,因此可能会减慢数据库(?)

第二种方法使我们可以更改单个过程而不会杀死所有其他过程。但是通过这种方法,我们将拥有1000多个文件,并且知道如何在发布的日期运行仅更改的文件。

感谢您的建议。

2 个答案:

答案 0 :(得分:2)

签出SQL Server Data Tools。它将促进git repo交互和部署。

采用的方法是每个过程使用一个文件,并在部署时将要部署的版本与服务器上的实际版本进行比较,以生成diff脚本。它也适用于表,视图,函数等。

您还可以在几种不同的部署方法之间进行选择,包括生成更改脚本并手动应用它。

答案 1 :(得分:0)

  

但是采用这种方法,我们将拥有1000多个文件,并且知道如何在以下日期运行   仅发布更改的内容。

是的,甚至可以想象您有表更改。那你怎么办删除并重新创建所有表?

各种形式的标准方法是具有(手动或自动生成)更改脚本。我们这样做-用文件夹和运行号在git中检入它们,并具有一个同步机制,可以基本上检查尚未运行的并按字母顺序运行它们。