我们要求将红门控制器作为自动化接口的一部分。
我们希望以编程方式链接所需的数据库并对数据库的更改进行提交。
这可能吗?如果是,我们应该使用哪种API?
答案 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)
也许这应该是评论,但我需要格式化和放大那里没有的空间。
像这样的“自动提交”通常是有风险的,因为它们有破坏原子性和信息丢失的风险。请考虑以下情况:我的建议是你改变了要求。突然出现意外(坏)后果的方法太多了。
答案 3 :(得分:0)
您是否正在将此作为自动构建过程的一部分?如果是这样,了解您正在使用的构建工具和源控制工具将会很有帮助。
这应该提供一些有用的资源:
http://www.red-gate.com/products/sql-development/sql-automation-pack/
有NAnt和MSBuild脚本可以为SQL Server数据库执行有用的构建/测试任务。如果要执行更多自定义操作,可以结合使用版本控制系统命令行和SQL Compare命令行。