现在的统计功能都是通过调用存储过程来实现的。客户经常会提一些新的要求,虽然修改很容易,但是每次修改后都得再手工导入客户的数据库,尤其是客户需要同时使用6,7个数据库,我的存储过程有10多个,每次更新非常头大,所以就想把存储过程的导入做成由程序来控制。
我自己的想法是这样的
1,把内容为存储过程的文本文件保存在DLL中,每次更新存储过程后更新DLL就可以了
2,做一个程序,依次调用DLL中的存储过程,导入指定的数据库。
不过现在对如何把文本保存到DLL,和调用DLL中的问题,以及如何导入数据库都不清楚,感觉无从下手,希望大家能指点一下
或者大家是否有更好的方法来实现存储过程的自动导入?
我的数据库是SQL2000

解决方案 »

  1.   

    链接数据库删除需要更新的存储过程创建新的存储过程(存储过程的内容存放用文本文件或是其他的存储方式,像XML文件,比较容易操作和有结构的)over
      

  2.   

    写程序执行alter proc不就行了么,做程序维护的应该有一个这样的工具
      

  3.   

    1.做一个程序更新程序,专门管更新的.2.更新程序,里面用ADOQUEY控件中写入相关的脚本.3.介面要有一个可以将目标服务器中所有数据库列出来的按钮,一按将所有数据库列到ComboBox.4.然后用FOR 指定ADOQUERY连接的数据库,执行脚本.
      

  4.   

    程序保留一个升级目录,升级目录当中放存储过程脚本,程序定时或者在启动的时候扫描升级目录,如果有需要更新的,可以通过osql等外部工具执行升级脚本,也可以自己的程序去执行。这样子就不需要手动处理了。最好是存储过程内部增加一个版本号,比如带上某一个特定的参数存储过程就返回自身的版本号,这样子程序就可以根据升级目录当中存储过程的版本号和当前存储过程的版本号做比较,如果有更新则升级。
      

  5.   

    存储过程当中可以写上:
    if exists(select 1 from sysobjects where xtype='P' and name='存储过程名')
      drop procedure 存储过程名
    create procedure 存储过程名
    ...
      

  6.   

    1,存储过程和数据无关,仅仅是用来统计用的
    2,之所以想把存储过程封装在dll中,是想今后部署方便,不用拷那么多的文本,这也对版权的保护也有帮助
      

  7.   

    放到DLL当中和放到文本当中是一样的,如果想加密完全可以加密文件.
      

  8.   

    SQL SERVER不是有个导出存储过程的功能? 应该也不是很麻烦吧,可以把10个SP的更新脚本保存在同一个文件中,也就成一个文件了。其实应该在修改的同时就把改好的存储过程保存成文件,然后整理发布的时候就只是整理这些文件而已,就不用到了最后又要重新逐个选,好像很麻烦的样子。