Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 源代码管理和存储过程_Sql_Sql Server_Version Control_Stored Procedures - Fatal编程技术网

Sql 源代码管理和存储过程

Sql 源代码管理和存储过程,sql,sql-server,version-control,stored-procedures,Sql,Sql Server,Version Control,Stored Procedures,我一直想知道如何将SQL 2000上的所有存储过程置于源代码控制之下 我们对所有正常的源代码都使用Subversion,因此如果有一个使用Subversion解决问题的方法,那就太好了 你有什么想法吗 更新16-02-2009:这是我用来导出所有存储过程的vbs脚本: Set con = CreateObject("ADODB.Connection") con.ConnectionString = "*** Database connection string here ***" con.Ope

我一直想知道如何将SQL 2000上的所有存储过程置于源代码控制之下
我们对所有正常的源代码都使用Subversion,因此如果有一个使用Subversion解决问题的方法,那就太好了

你有什么想法吗

更新16-02-2009:这是我用来导出所有存储过程的vbs脚本:

Set con = CreateObject("ADODB.Connection")
con.ConnectionString = "*** Database connection string here ***"
con.Open 
Set rs = CreateObject("ADODB.RecordSet")
rs.ActiveConnection = con

strSQL = "SELECT ROUTINE_NAME, ROUTINE_DEFINITION " & _
"FROM INFORMATION_SCHEMA.routines " & _
"WHERE ROUTINE_NAME NOT LIKE 'dt_%' " & _
"ORDER BY 1"

Set fso = CreateObject("Scripting.FileSystemObject")
rs.Open strSQL 
While Not rs.Eof 
    filename = rs("ROUTINE_NAME") & ".sql"
    routineSQL = rs("ROUTINE_DEFINITION")
    Set tf = fso.CreateTextFile(filename, True)
    tf.Write routineSQL
    tf.Close
    set tf = Nothing 
    rs.MoveNext
Wend
Set fso = Nothing 
rs.Close 
Set rs = Nothing 

通常在源代码管理中跟踪对SQL脚本的更改。 例如,您已经签入了数据库的基本模式。 然后继续添加新的SQL文件以更改模式。这样,您就可以部署到一个精确的版本进行测试。然后,您可以使用构建自动化来自动测试一些脚本,方法是对包含实际数据的测试数据库执行它们


有很多数据库差异工具可以帮助您计算版本之间的更改。

将所有存储过程脚本化到一个文件夹中。每个存储过程一个文件

然后简单地将那个装满文件的文件夹置于源代码控制之下,就像您处理其他源代码一样

如果有一个批处理文件或类似文件将这些存储过程附加在一起,它也会有所帮助,这将是您的“将数据库升级到最新版本”脚本


有很多方法可以管理数据库本身中的存储过程,但我发现这是最简单的方法。

正如其他人所说,从源代码管理下的单独文本文件中的每个存储过程开始。编写一个脚本,删除所有存储过程,然后从文本文件中重新创建它们(同时记录/报告任何错误)–此脚本应易于运行。然后,每次从源代码管理更新时,都会重新运行脚本。对存储过程的所有编辑都应针对文本文件,而不是本地数据库上的“实时”副本,否则在执行更新时会丢失更改

您很快就会需要某种方式来审核数据库模式和创建升级脚本等

如果您只使用SQLServer,则从中考虑。我认为它会将文本文件中存储的过程(和其他sql)与数据库中的内容进行比较,并将两者同步。因此,您可以使用SqlServer中的编辑工具来编辑实时存储过程

(截至2009年底,“红门”即将上市)

我被告知,ApexSQL的工具是另一种选择,而不是Sql比较,ApexSQL声称提供源代码控制集成

在高端考虑VisualStudioTeam StaseDeaBaseEdio版本,但是它花费很多,然后您可能不得不支付更多的Oracle支持从第三方。但是,如果你是微软的合作伙伴(或者可以成为合作伙伴),你可能会以非常便宜的价格获得一些cope


在StAccess上,对于一个更大的问题的一组很好的答案,

< P>除了红门的SQL比较之外,考虑ApexSQL的用于检查数据库之间结构差异的工具。您可能还需要考虑集成源代码管理的管理工具。ApexSQL提供了源代码管理集成。

请参见此处的Josef解决方案:

他有一个自动创建脚本文件的工具,然后可以将其签入SVN(或者任何其他存储库)