当前位置: 首页 > 面试题库 >

源代码控制和存储过程

司浩壤
2023-03-14
问题内容

我一直想知道如何将所有存储过程放在源代码管理下的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

问题答案:

就像其他人所说的那样,首先将每个存储的proc存储在一个单独的文本文件中,该文件受源代码控制。写一个脚本来删除所有存储过程,然后从文本文件中重新创建它们(同时记录/报告任何错误)-该脚本应该易于运行。然后,每次您从源代码管理进行更新时,都将重新运行脚本。对存储过程的所有编辑都应对文本文件进行,而不是对本地数据库上的“ive”副本进行,否则您在进行更新时将丢失更改。

您很快将需要某种方式来审计数据库架构和创建升级脚本等。

如果仅使用SQL Server,请考虑从Reg-Gate进行SQL比较。我认为它将比较文本文件中存储的proc(和其他sql)与数据库中的内容,并使两者同步。因此,让您使用SqlServer中的编辑工具来编辑实时存储过程。

(截至2009年底,Red-Gate即将交付Sql Compare for Oracle)

有人告诉我,ApexSQL的Diff工具是另一个替代Sql
Compare的选项,ApexSQL的Edit声称提供源代码控制集成。

在高端考虑使用Visual Studio Team System Database
Edition,但是它花费很多,那么您可能不得不为来自第三方的Oracle支持付出更多的代价。但是,如果您是Microsoft的合作伙伴(或可以成为其中一个),您可能会以非常便宜的价格得到一些应对。



 类似资料:
  • 问题内容: 我最近开始了一个Django项目,并很快意识到,由于多种原因,virtualenv真的很有用。我设置了virtualenv和我的项目,但是现在我想知道应该将哪个文件添加到源代码管理(在我的情况下是Mercurial)。我应该在venv文件夹下添加所有文件吗?如何确保同事可以克隆并立即开始工作而无需再次设置环境? 问题答案: 你会生成一个与项目一起提交的“需求”文件(通常是): 然后,每

  • 问题内容: 首先介绍技术资料: 我们正在使用VS 2008 pro并正在运行MS SQL 2008服务器。对于源代码控制,我们使用Subversion。 我们真的很想让我们的存储过程处于颠覆状态,因此我们可以知道更改的内容,时间等。 但是,要使其正常工作,它必须是无缝的,否则,开发人员将忘记将过程包括在其提交中。 那么,对此有什么好的解决方案吗? 我敢肯定我们不能成为唯一拥有此问题的公司:-) 问

  • 问题内容: 在开发具有许多存储过程的应用程序时,是否应该将它们存储在某种源版本控制系统中(例如源安全,TFS,SVN)?如果是这样,为什么?是否有使用SQL Server Management Studio进行操作的便捷前端方法? 问题答案: 是的。所有代码都应存储在源代码管理中。 简而言之,代码就是代码,并且会发生错误。能够回头看看随着时间的推移发生了什么变化并能够返回到那些变化,这是很好的。

  • 源代码控制系统(又称版本控制系统)让你高效地管理工程。他们对一个人是很有用的,对一个团队是至关重要的。它们追踪不同版本里的所有改变,以至于所有代码都未曾丢失,其含义可以归属于改变。有了源代码控制系统,一个人可以自信地写一些而半途而废的代码和调试的代码,因为你修改的代码被仔细地与提交的、官方的即将与团队共享或发布的代码分割开。 我挺晚才开始意识到源代码控制系统的好处,但现在即使是一个人的工程,我也不

  • 当使用https://pre-commit.com时,VSCode钩子依赖于安装在Python venv中的包。在预提交中,可以指定使用“系统”作为环境。这在终端上工作得很好,需要的venv是活动的。 然而,使用集成源代码控制,似乎可以访问global interpeter,因此无法获得所需的软件包。 这里有解决方法吗?至于现在,我在预提交配置中指定了入口点“路径/到/bin/python-m包”

  • 我对Codeigniter有意见。我试图将值从视图传递给控制器,它起作用了。但是当它从控制器传递到模型时有一个问题。它没有将任何值返回到视图中。 这是我的控制器: 这是模型 这就是我的观点 这是存储过程的结果 这是我得到的错误 遇到PHP错误严重性:警告 消息:非法字符串偏移量“id” 文件名:pages/Update2G。php 行号:3 回溯: 文件:C:\xampp\htdocs\Dapot