请教各位:
现在我的数据库空间快满了,开始时我把大多数的字段类型设成了nvarchar(100)或者char (100),其实我很多数据的长度都是25左右,如果我把他们都转换成varchar,由系统自主调配数据的长度,是否能减肥我的数据库阿?!

解决方案 »

  1.   

    要考虑一下未来是否有插入UNICODE数据的可能,在空间和兼容之间权衡一下.
      

  2.   

    --你先测试一下!
    CREATE TABLE TEST1(field1 nvarchar(20),field2 nvarchar(20))SP_HELP 'TEST1'EXEC sp_configure 'allow updates',1
    RECONFIGURE WITH OVERRIDE 
    GO
    UPDATE syscolumns
    SET xusertype = '167',XTYPE='167'
    WHERE id = OBJECT_ID('TEST1') AND XTYPE='231'
    GO
    EXEC sp_configure 'allow updates',0
    RECONFIGURE WITH OVERRIDE 
     SP_HELP 'TEST1'
      

  3.   

    --对整个数据库char类型的数据实现转换
    EXEC sp_configure 'allow updates',1
    RECONFIGURE WITH OVERRIDE 
    GO
    DECLARE tables_cursor CURSOR
       FOR
       SELECT name FROM sysobjects WHERE type = 'U'
    OPEN tables_cursor
    DECLARE @tablename varchar(128)
    FETCH NEXT FROM tables_cursor INTO @tablename
    WHILE (@@FETCH_STATUS <> -1)
    BEGIN  
      exec( 'UPDATE syscolumns
      SET xusertype = 167,XTYPE=167
      WHERE id = OBJECT_ID('''+@tablename+''') AND XTYPE=231')
      FETCH NEXT FROM tables_cursor INTO @tablename
    END
    CLOSE tables_cursor
    DEALLOCATE tables_cursor
    GO
    EXEC sp_configure 'allow updates',0
    RECONFIGURE WITH OVERRIDE
    --注意!容易引起中文变乱码!