alter table staff_info alter column user_cardadd nvarchar(50)消息 211,级别 23,状态 7,第 3 行
可能发生了架构损坏。请运行 DBCC CHECKCATALOG。
消息 0,级别 20,状态 0,第 0 行
当前命令发生了严重错误。应放弃任何可能产生的结果。user_cardadd这个字段本来是 nvarchar(60)的我想改成 nvarchar(50)就报错 怎么回事啊

解决方案 »

  1.   

    按照你的情况我试了一下,如果数据不超过修改的范围,执行成功,如果超过,有如下 情况,并没出现你这个情况,你需要执行 那个DBCC CHECKCATALOG了
    create table tb(id int,name nvarchar(60))insert tb select 1,replicate('1',60)select * from tbalter table tb alter column name nvarchar(50)服务器: 消息 8152,级别 16,状态 13,行 1
    将截断字符串或二进制数据。
    语句已终止。
      

  2.   

    DBCC CHECKCATALOG
    检查指定数据库中的系统表内及系统表间的一致性。语法
    DBCC CHECKCATALOG
        ( 'database_name'
        )    [ WITH NO_INFOMSGS ]参数
    'database_name'是要对其系统表一致性进行检查的数据库。如果未指定,则默认为当前数据库。数据库名称必须符合标识符的规则。有关更多信息,请参见使用标识符。 WITH NO_INFOMSGS当错误信息少于 200 条时,禁止显示所有的信息性消息和关于所用空间的报告。如果未指定,DBCC CHECKCATALOG 则会显示所有的错误信息。DBCC CHECKCATALOG 消息按对象 ID 排序(从 tempdb 中生成的消息除外)。注释
    DBCC CHECKCATALOG 对 syscolumns 中的每种数据类型在 systypes 中是否都有一个匹配项进行检查,同时还对 sysobjects 中的每个表和视图在 syscolumns 中是否都至少有一列进行检查。结果集
    如果没有指定数据库,DBCC CHECKCATALOG 会返回以下结果集(消息):DBCC results for 'current database'.
    DBCC execution completed. If DBCC printed error messages, contact your system administrator.如果提供 Northwind 作为数据库名称,DBCC CHECKCATALOG 会返回以下结果集(消息):DBCC results for 'Northwind'.
    DBCC execution completed. If DBCC printed error messages, contact your system administrator.权限
    DBCC CHECKCATALOG 权限默认授予 sysadmin 固定服务器角色、db_owner 和 db_backupoperator 固定数据库角色的成员且不可转让。示例
    下例对当前数据库和 pubs 数据库中对象的分配和结构完整性进行检查。-- Check the current database.
    DBCC CHECKCATALOG
    GO
    -- Check the pubs database.
    DBCC CHECKCATALOG ('pubs')
    GO
      

  3.   

    DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。没什么错误啊
      

  4.   

    那就没什么办法了。你再多看看吧帮贴http://topic.csdn.net/u/20080923/11/e28bc0ae-fd53-4dc7-8c1c-487c1185fdd2.html
      

  5.   

    60和50差不多少,varchar类型是实际占用空间计算的。如果实在改不了就不该。或者从新见一个表,将原来的数据导入进新标里吧。
      

  6.   


    create table ttinsert1(id int,tt nvarchar(60))insert into ttinsert1
    select 2,replicate('1',50)create table ttinsert2(id int,tt nvarchar(50))insert into ttinsert2
    select * from ttinsert1