Chinaunix

标题: 请问存储过程涉及到跨库操作需要注意什么问题呢?(db异常重启出现的问题) [打印本页]

作者: sean_server    时间: 2009-12-31 09:54
标题: 请问存储过程涉及到跨库操作需要注意什么问题呢?(db异常重启出现的问题)
维护一个业务发现其中有个存储过程是涉及到跨库操作,就是把数据查到了另外一个数据库(例如.dbname=sms)的表里面,之前由于数据库服务器异常重启导致表发生identity字段跳跃,之后把相关的表重建并恢复数据;但是之后这个业务就不正常了,数据不能插入到另外一个数据库sms里面,检查了很久发现才发现重建这个存储过程之后就恢复正常了,数据也能插入到sms里面了。
想问两个问题:
1、为何这个存储过程必须要重建呢?是否和跨库操作有关系?
2、编写存储过程跨库操作有什么注意事项或者如何做才更优化?
作者: chuxu    时间: 2009-12-31 12:42
我猜想应该和identit字段有关系吧,本地机器上不能获取远程identit最后的结果值,导致插入的值比这个小,造成不能插入数据,重新编译之后正常。
不过这种处理方法似乎有点风险。以后可能还会出现这样的问题。
作者: sean_server    时间: 2009-12-31 13:38
是同一台机器,只是建了A&B两个数据库。
我猜测是不是由于A库重建了表之后,表的id变化了,但是由于是跨库操作,存储过程是预编译的,所以在B库的存储过程必须要重新编译才可以?(不过好像又说不通,表的信息应该是记录在master库里面的)

[ 本帖最后由 sean_server 于 2009-12-31 13:40 编辑 ]




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2