SQL Server 2k企业管理器复制表BUG
续前几天发现企业管理器的乱码bug后,今天又发现一个SQL Server 2000企业管理器的bug。希望这次大家都能复现,而不要再是什么rpwt了@_@。不过不要怪我操作太bt哦~~
如果我们想清空一个表,表的内容挺多的,并且表内有自增字段。我们希望删掉数据后,重新向表中插入数据,自增字段能从1开始。这时最好的办法就是把建表的SQL语句导出,然后删掉表,再执行SQL把表建出来。企业管理器提供了一个导出建表SQL语句的快捷方法,就是在表名上点右键并选复制。之后在一个文本编辑器里Paste,就得到建表的SQL语句了。这个没有问题,那么问题是怎么来的呢?
当我在测试代码时,向一个表里写了一大坨数据,我在程序release时想把数据库清空,于是我就复制表,然后删除数据库,再执行SQL。如果我复制表后,在文本编辑器里Paste,再删除被复制表,再在企业管理器里执行SQL,毫无问题。可是如果我这样操作:
在企业管理器里,复制表->删除该表->再粘贴SQL代码。这时企业管理器就crash了,错误信息为:
// windows xp sp1 + sql server 2000 sp3a,都是英文版
bug分析,企业管理器在处理表Copy的时候使用的应该是lazy initialize的方式,所以在表格被删除后再paste就出问题了,不过居然没有错误处理机制,而是整个企业管理器crash掉,利害。
如果我们想清空一个表,表的内容挺多的,并且表内有自增字段。我们希望删掉数据后,重新向表中插入数据,自增字段能从1开始。这时最好的办法就是把建表的SQL语句导出,然后删掉表,再执行SQL把表建出来。企业管理器提供了一个导出建表SQL语句的快捷方法,就是在表名上点右键并选复制。之后在一个文本编辑器里Paste,就得到建表的SQL语句了。这个没有问题,那么问题是怎么来的呢?
当我在测试代码时,向一个表里写了一大坨数据,我在程序release时想把数据库清空,于是我就复制表,然后删除数据库,再执行SQL。如果我复制表后,在文本编辑器里Paste,再删除被复制表,再在企业管理器里执行SQL,毫无问题。可是如果我这样操作:
在企业管理器里,复制表->删除该表->再粘贴SQL代码。这时企业管理器就crash了,错误信息为:
// windows xp sp1 + sql server 2000 sp3a,都是英文版
bug分析,企业管理器在处理表Copy的时候使用的应该是lazy initialize的方式,所以在表格被删除后再paste就出问题了,不过居然没有错误处理机制,而是整个企业管理器crash掉,利害。
posted on 2005-03-27 21:07 birdshome 阅读(3504) 评论(3) 编辑 收藏 举报