日期:2014-05-20  浏览次数:20499 次

数据库更新的问题,曾经问过,没有解决。
我们曾经发布了一个软件,后期软件不断升级,并且也会向用户发更新包。
以前的做法是:用户覆盖原来的文件,运行一个sql文件更新数据库。
现在有个问题:后期我们有很多存储过程,这个sql文件已经有2w多行了,而且有部分逻辑封装在里面,我们不想让用户看见,我们用的sql2005可以对存储过程加密。
但是还把文件发给他们更新就失去加密的意义了。

现在想法是:加密这个2w行的sql文件(已经完成)
                        然后用程序读取并解密(已经完成)
问题:在运行的时候总是报错,后来查询是不能有   ‘GO’,另外还有   “ 'CREATE/ALTER   PROCEDURE '   必须是查询批次中的第一个语句。”go我可以去掉,但创建存储过程或表的是必不可少的。

请问下做过更新程序的朋友,你们是怎么解决的?非常感谢。

------解决方案--------------------
帮UP
------解决方案--------------------
一个批处理中为什么不能有GO
------解决方案--------------------
不会,学习来了
顺便顶一下
------解决方案--------------------
那你可以将一完成批处理进行加密,程序解密后,对GO进行分割,然后取片段逐步执行。
------解决方案--------------------
啊灰对这有兴趣否
http://community.csdn.net/Expert/TopicView1.asp?id=5283871
------解决方案--------------------
为避免出现分割错误,最好是 "\r\nGO\r\n "

~~~~~~~~~~~
http://community.csdn.net/Expert/topic/5283/5283871.xml?temp=.8859674

项目名称:大型通信项目
人员要求
1、计算机相关专业毕业
2、具有2年以上C#.NET编程开发经验(B/S)
3、能够熟练使用Visual Studio 2005 及 Visual SourceSafe团队开发工具
4、熟悉WAP开发经验者更佳
5、熟悉软件建模设计思想及工具者更佳
6、能够理解并应用结构化编程思想
7、有图形编辑软件开发、代码生成工具开发经验者更佳
8、良好的英语听说读写能力
开发公司:顶易信息
开发地点:上海市浦东新区(全职)

有兴趣者请单独给我发消息,或加QQ群:2850156
------解决方案--------------------
一个connection中是不能有GO,如果没有go,前一段代码不会提交。 如果代码不长,可分多个command执行。但长了就不行了。可以sqlserver的命令执行sql文件。
------解决方案--------------------
比如,我要执行d:下的aa.sql文件,调用命令行程序 osql -S localhost -E -d test -i d:\aa.sql
------解决方案--------------------
参数: -S 后面+sever -E表示信任连接 -d 后面+数据库名 - i 要导入执行的sql文件
------解决方案--------------------
可以把SQL语句放在一个变量中,然后安 'GO '分成一个数组
最后分别执行数组中的SQL语语句
------解决方案--------------------
go标志着一个批的 结束
------解决方案--------------------
将.sql文件加密给客户,用应用程序解密到一个临时文件(比如windows下...),然后用osql执行,然后删除该文件。
------解决方案--------------------
Top

学习...
------解决方案--------------------
是不是可以调用osql.exe来执行sql脚本
------解决方案--------------------
sql 文件中go跟上文之间进行明显的换行
让这个Go处于单独一行。
------解决方案--------------------
帮兄弟顶了!
------解决方案--------------------
我们以前也遇到这样的问题,后来用加密sql文件,然后用程序执行解密为临时文件,用osql执行,然后删除临时文件
------解决方案--------------------
看过!顶先.
------解决方案--------------------
不懂.帮定