自动化红门源控制DB链接并提交SVN

时间:2013-07-29 09:56:55

标签: svn redgate

我们要求将红门控制器作为自动化接口的一部分。

我们希望以编程方式链接所需的数据库并对数据库的更改进行提交。

这可能吗?如果是,我们应该使用哪种API?

4 个答案:

答案 0 :(得分:2)

我知道这个问题已经过时了,但我正在完成您所描述的内容。

我有一个每X分钟运行一次的工作,并将数据库的当前状态置于版本控制中(对我们而言,它可以使用git或其他任何东西实现完全相同的事情。)

cd c:\data\SourceCodeDirectory
hg pull
hg update
if not exist "c:\data\SourceCodeDirectory\databaseName" mkdir "c:\data\SourceCodeDirectory\databaseName"
cd "c:\Program Files (x86)\Red Gate\SQL Compare 11"
sqlcompare /s1:DBServer /db1:databaseName /scr2:"c:\data\SourceCodeDirectory\databaseName" /synchronize

cd c:\data\SourceCodeDirectory\databaseName
hg add
hg commit -m "Database Changes" -u DatabaseSchemaUser
hg push

只要此作业运行,对数据库所做的任何更改都将在版本控制中。

答案 1 :(得分:0)

这是一个艰难的。根据您的自动化方式,您可以使用其他程序的组合。例如,如果您有某种CI系统,则可以使用SQL Compare自动将源代码管理中的文件与实时数据库进行比较,并告诉它进行同步。您需要源控制系统的命令行界面来检查更改。

SQL Source Control作为一个软件,旨在仅以交互方式工作。

如果你想在代码(c#,VB)中这样做,那么你可以利用源代码控制系统的API检查文件是否有文件。例如,SVN有“SharpSVN”,还有一个TFS API。

答案 2 :(得分:0)

也许这应该是评论,但我需要格式化和放大那里没有的空间。

像这样的“自动提交”通常是有风险的,因为它们有破坏原子性和信息丢失的风险。请考虑以下情况:

  1. 两位开发人员正致力于数据库中的独立更改。它们同时改变了它们各自的表格,并且这种自动化选择了这一点并将表格更改作为一个单元提交。你如何分开这两项活动?
  2. 上述情况发生时,其名称是否在存储库更改日志中?
  3. 开发人员正在进行广泛的更改,涉及对多个表格的更改。存储过程。这种自动化独立地提交每个。你如何“捆绑”这些用于日志记录&审核,审核已经做出的更改等?
  4. 在我的环境中,提交给代码存储库的每个更改都需要在提交消息中记录更改ID。这将如何运作?
  5. 我的建议是你改变了要求。突然出现意外(坏)后果的方法太多了。

答案 3 :(得分:0)

您是否正在将此作为自动构建过程的一部分?如果是这样,了解您正在使用的构建工具和源控制工具将会很有帮助。

这应该提供一些有用的资源:

http://www.red-gate.com/products/sql-development/sql-automation-pack/

有NAnt和MSBuild脚本可以为SQL Server数据库执行有用的构建/测试任务。如果要执行更多自定义操作,可以结合使用版本控制系统命令行和SQL Compare命令行。