免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: joey
打印 上一主题 下一主题

关于对象重新编译的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2003-09-09 22:52 |只看该作者

关于对象重新编译的问题

有时recompile不起作用的,重建时最保险的办法.(如果保存有原码)其实没细看全部内容,不过总结非常认同

论坛徽章:
0
12 [报告]
发表于 2003-09-10 09:41 |只看该作者

关于对象重新编译的问题

     我坚信

sp_recompile 是会 导致对象重新编译的


起始昨天我就试过不行,为了确认,今日有测试了一次,还是不行的。
起始手册中说可以recompile,也许只是优化了某一部分,并不能解决我们这里提到的问题

论坛徽章:
0
13 [报告]
发表于 2003-09-17 11:53 |只看该作者

关于对象重新编译的问题

评为精华了,
提点小小意见,这是我自己写的,不是zt的.
放到原创精华更合适的

论坛徽章:
0
14 [报告]
发表于 2003-09-17 11:59 |只看该作者

关于对象重新编译的问题

不要太贪心,呵呵。鼓励原创!

论坛徽章:
0
15 [报告]
发表于 2003-09-17 13:06 |只看该作者

关于对象重新编译的问题

确实不错.对待这样一个小问题做如此深刻的分析,精神另我佩服

论坛徽章:
0
16 [报告]
发表于 2003-09-17 19:34 |只看该作者

关于对象重新编译的问题

呵呵joey   比我强,上次我也是由于sp_rename的问题导致我们数据库出现很大的问题,不过后来知道是没有讲存储过程recomplie,但是我没有做这么细致的分析?佩服

论坛徽章:
0
17 [报告]
发表于 2003-09-17 20:44 |只看该作者

关于对象重新编译的问题

原帖由 "Blackrose" 发表:
我坚信

sp_recompile 是会 导致对象重新编译的
   

我一般 只 sp_recompile table  
从来没有使用 sp_recompile procedure
不过还有点怀疑,明天自己验证看看。

论坛徽章:
7
数据库技术版块每日发帖之星
日期:2015-08-09 06:20:00数据库技术版块每日发帖之星
日期:2015-11-03 06:20:00数据库技术版块每日发帖之星
日期:2016-02-20 06:20:00数据库技术版块每日发帖之星
日期:2016-07-13 06:20:00数据库技术版块每日发帖之星
日期:2016-07-31 06:20:00数据库技术版块每日发帖之星
日期:2016-08-01 06:20:00数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
18 [报告]
发表于 2003-09-18 09:13 |只看该作者

关于对象重新编译的问题

sp_recomplie后面只能跟 table的名字,不能针对某个procedure进行recompile的。

论坛徽章:
0
19 [报告]
发表于 2003-09-18 09:27 |只看该作者

关于对象重新编译的问题

关于 在 存储过程中使用 select * from table  以及新增加字段后新列为什么不出现的问题,我这里给一个比较正确的认识:
在检查你的存储过程文本中,可以看到,任何
select * from table 在数据库保存并编译的时候,都被数据库编译器替换为
  select col1,cole .....coln  的形式,被替换成具体的列名,新增加列后
新列名不会自动出现在这里
因此,新增加的列为什么 没有出来,原因就很清楚了。并不是重编译与否的问题,
我同意 blackrose 的看法 ,数据库存储过程肯定重新编译。

重新编译的对象应该是第一次数据库保存与编译时展开的数据库脚本,而不是开发人员写的 select * 因此 重新编译后并没有新列是很正常的,它只对展开列名
的sp 进行编译。

我认为缺失列的原因并不是楼主所说的原因(没有重新编译,而是编译的对象是什么!),请广大网友务必不要搞 混淆!

也请斑竹仔细检查,否则。。。     


另外 这样的问题在 mssql 数据库不会出现,
在mssql 数据库中,编译器不会修改你select * from ...的语句中的 * 为具体的列名 因此 从这里可以看出, 从 mssql 移植程序到 sybase 的人要改变观念,屏气写 select * from 的陋习!     

sp_rename.jpg (64.26 KB, 下载次数: 48)

sp_rename.jpg

sp_rename.jpg (64.26 KB, 下载次数: 50)

sp_rename.jpg

论坛徽章:
0
20 [报告]
发表于 2003-09-18 13:36 |只看该作者

关于对象重新编译的问题

同意zhangyh123 的解释
任何
select * from table 在数据库保存并编译的时候,都被数据库编译器替换为
select col1,cole .....coln 的形式,被替换成具体的列名,新增加列后
新列名不会自动出现在这里
因此,新增加的列为什么 没有出来,原因就很清楚了。

我并非说这是重新编译导致的问题,而是说重新编译可以解决这些问题。
也就是说,只有重新编译,stored proc 才能刷新底层表发生的变化。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP