真正MS SQL 2000高手你在哪里:如何写一段SQL语句去掉一个字段的自增长属性??? ( 积分: 50 )

  • 主题发起人 主题发起人 btt
  • 开始时间 开始时间
to chnplzh
字段顺序不应该改变;您的方法,如果自段少还可以,如果字段多就麻烦了。我的那张表
有30多个字段。
 
“我的那张表有30多个字段”

你不可能30多个字段都是identity字段吧!
 
既然已经设计在了自动增长字段,为什么还要去掉,搞不懂是什么意思。
 
to chnplzh
字段顺序不应该改变;我的那张表有30多个字段。怎么能保证我的表的字段顺序与原来一一样? 我的表就一个字段是 identity属性,int型。
 
"怎么能保证我的表的字段顺序与原来一一样?"
为什么要一模一样呢?看来楼主要好好去研究一下SQL-DMO了,因为SQL SERVER的企业管理器就是建立在SQL-DMO之上的,而SQL-DMO其实就是一个COM组件。
 
To btt:
1、老兄,我当然试过,我给你的方法很多人用过毫无问题。
2、顺便解释一下,前 4 句是打开修改系统表开关,中间 4 句是修改字段自增长属性(自增长字段的 typestat = 1、colstat = 1,都把它改回 0),最后 4 句关闭开关。
3、WHERE name = 'col1' and id = OBJECT_ID('db1..tbl1') 这句是找到该字段在系统表中的记录。表 tbl1 的所有字段的 id 都等于 OBJECT_ID('db1..tbl1'),必须加上 name = 'col1' 来约束。
4、仅仅修改字段的这两个属性不会造成什么灾害,你出现的错误也令我莫名其妙。
 
按新要求新建一张表;
insert into 新表 (*) (select * from 原表);
删掉原表;
新表改成原表名...
 
select * into #临时表 from 原表
go
drop table 原表
go
create table 新表
go
insert into 新表
select * from #临时表
go
 
to vvyang
你的方法在我这确实报错。不知为什么?我已经N台机器试了N遍了!!!
我的数据库系统:MS SQL2000 个人版,不知是否跟着有关。
如有时间,烦劳试一下,是否报错。
 
我的是企业版,没什么问题啊。
哪位兄弟能帮忙在机器上试试啊?!
 
to vvyang
我的意思时说,您的方法确实把自增属性去掉了,但select这张表时报错,未能在 sysobjects 中找到数据库‘tbl1 ’的对象 id '*******'对应的行。
 
我知道啊,我 SELECT 没问题啊!
你让别人帮着试一下吧。
 
to vvyang
你的方法与版本有关,在 2000-8.00.760上不行,报错;而在2000-8.00.194上升级
ms sql2000 sp3后不报错,正常;而不升级ms sql2000 sp3有时报错,不好使,但有时好使,不报错; 在 2000-8.00.760上升级ms sql2000 sp3后也不好使,情况就是这样。
 
1、打开SQL Server“事件探查器”
2、在“企业管理器”中修改表结构(将标识由"否"改为"是")
3、在“事件探查器”查看SQL语句
 
to xianguo
这种方式,太复杂了!!!
 
我的就是 SQLServer 2000-8.00.760,没打过补丁。
我尽力了,至于更好的方法我不知道,您问别人吧。
 
To btt:
vvvyang的方法是对的了,我测试过了。
 
非常感谢大家!!!!
 
后退
顶部