Git和SQL Server MDF文件

时间:2012-01-23 13:09:14

标签: sql-server git

好的。所以我是Git / Github的新手,因为我的职业生涯大部分时间都在使用Visual Source Safe,并且已经看到了光 - 喜欢它。因此,我已将所有.NET项目迁移到我的Github帐户,并且还希望使用Git管理我的所有SQL Server数据库。在我的所有项目中,我总是将我的数据库文件放在/ Database子目录中,所以我在源代码树中有/Databases/MyDatabase.mdf和/Databases/MyDatabase.ldf。我正在使用Git跟踪这些文件,它们在Github上很好地展示了我的所有其他资源。

这就是我期望发生的事情:我使用NET STOP MSSQLSERVER停止SQL Server并检查分支,以便Git将下拉该分支的MDF和LDF文件。使用NET START MSSQLSERVER重新启动SQL Server,并在该特定分支的源和数据库上执行我需要做的任何工作。 Git会跟踪我对MDF文件的更改,当我执行stage / commit / push时,它会将更改发送回远程存储库。

我通过下拉数据库并向表中添加新列并执行提交来尝试此操作。 Git告诉我,我没想到的任何项目都没有变化......我改变了MDF文件。 Git是否无法跟踪MDF文件中的更改?我的第一个猜测可能是因为它是二进制而不是文本库Git可能有问题,但我相信可以使用Git来跟踪图像文件和其他二进制项目,这样看起来不会是问题。有任何想法吗?这是不可能的吗?我甚至不想这样做吗?提前感谢您的意见。

2 个答案:

答案 0 :(得分:8)

更改数据库文件放入任何源代码管理中是非常糟糕的。尝试创建/更新适当的脚本并将它们存储在源代码管理中 - 这是跟踪数据库内架构更改的正确方法

如果您正在使用Visual Studio - 这是从数据库和服务器项目开始的一个好点。但有时它表现得很奇怪,所以要谨慎使用并轻轻地

OR 您可以使用一些商业/免费软件来跟踪数据库架构和数据内的更改,例如RedGate架构比较或Redgate数据比较

答案 1 :(得分:1)

您是否考虑使用我们的SQL源代码管理工具来跟踪开发更改。这将在幕后为您完成所有“脚本编写”。它实际上使用了SQL Compare的引擎。

http://www.red-gate.com/products/sql-development/sql-source-control/

正如Oleg正确指出的那样,可以使用SQL Compare和SQL Data Compare跟踪架构更改,但是在Red Gate,我们不建议您在源代码管理下维护开发环境。理想情况下你应该做两件事。 Grant Fritchey撰写了一篇很好的文章,描述了SQL Compare的命令行如何与源代码控制系统一起使用来跟踪架构更改。他在他的示例中使用了SourceGear Vault,但这些原则适用于任何源控制系统。

http://www.simple-talk.com/sql/database-administration/auditing-ddl-changes-in-sql-server-databases/