想保留ID的话只好导到别的表里
DROP 原表,再改名喽

解决方案 »

  1.   

    to:gaodongsheng(东升)
    用事件探查器看to;zjcxc(邹建)确实是删除重建的,我以为用alter table行呢?好的,谢谢邹老大,结帖。
      

  2.   

    to:gaodongsheng(东升)
    通过企业管理器修改表结构时,上面的第一个是'保存',第二个是'表和索引属性',第三个是'保存更改脚本'....
    点第三个就可以看到了.
      

  3.   

    to:outwindows(窗外) 
    好方法,呵呵,我以前还没有用过呢?谢谢了!
      

  4.   

    不过,企业管理器里面生成的处理脚本并不一定是最优的,它有时以很愚蠢的方式来处理问题,看下面的粘贴:要谨慎使用 Enterprise Manager。希望您能够了解在屏幕后的运行情况,并确保在 Enterprise Manager 不能有效运行时使用 T-SQL。
    现在,假设必须把 customerid 列从 varchar(5) 增大到 varchar(10)。使用 T-SQL 可以编写一个简短、有效的脚本。这是因为 SQL Server 不需要在物理上访问每行以增大 varchar 列,而只是在元数据中表达这个更改,所以这个脚本可以在瞬间运行。
    ALTER TABLE ttt 
      ALTER COLUMN a VARCHAR(10)  NULL
    go
    而企业管理器生成的脚本却是:
    BEGIN TRANSACTION
    SET QUOTED_IDENTIFIER ON
    SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
    SET ARITHABORT ON
    SET NUMERIC_ROUNDABORT OFF
    SET CONCAT_NULL_YIELDS_NULL ON
    SET ANSI_NULLS ON
    SET ANSI_PADDING ON
    SET ANSI_WARNINGS ON
    COMMIT
    BEGIN TRANSACTION
    CREATE TABLE dbo.Tmp_ttt
    (
    a char(10) NULL
    )  ON [PRIMARY]
    GO
    IF EXISTS(SELECT * FROM dbo.ttt)
     EXEC('INSERT INTO dbo.Tmp_ttt (a)
    SELECT a FROM dbo.ttt TABLOCKX')
    GO
    DROP TABLE dbo.ttt
    GO
    EXECUTE sp_rename N'dbo.Tmp_ttt', N'ttt', 'OBJECT'
    GO
    COMMIT
      

  5.   

    不过,企业管理器里面生成的处理脚本并不一定是最优的,它有时以很愚蠢的方式来处理问题,看下面的:要谨慎使用 Enterprise Manager。希望您能够了解在屏幕后的运行情况,并确保在 Enterprise Manager 不能有效运行时使用 T-SQL。
    现在,假设必须把表ttt的a列从 varchar(5) 增大到 varchar(10)。使用 T-SQL 可以编写一个简短、有效的脚本。这是因为 SQL Server 不需要在物理上访问每行以增大 varchar 列,而只是在元数据中表达这个更改,所以这个脚本可以在瞬间运行。
    ALTER TABLE ttt 
      ALTER COLUMN a VARCHAR(10)  NULL
    go
    而企业管理器生成的脚本却是:
    BEGIN TRANSACTION
    SET QUOTED_IDENTIFIER ON
    SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
    SET ARITHABORT ON
    SET NUMERIC_ROUNDABORT OFF
    SET CONCAT_NULL_YIELDS_NULL ON
    SET ANSI_NULLS ON
    SET ANSI_PADDING ON
    SET ANSI_WARNINGS ON
    COMMIT
    BEGIN TRANSACTION
    CREATE TABLE dbo.Tmp_ttt
    (
    a char(10) NULL
    )  ON [PRIMARY]
    GO
    IF EXISTS(SELECT * FROM dbo.ttt)
     EXEC('INSERT INTO dbo.Tmp_ttt (a)
    SELECT a FROM dbo.ttt TABLOCKX')
    GO
    DROP TABLE dbo.ttt
    GO
    EXECUTE sp_rename N'dbo.Tmp_ttt', N'ttt', 'OBJECT'
    GO
    COMMIT