Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server 2008列更改不起作用_Sql_Sql Server 2008_Varchar_Alter Table - Fatal编程技术网

SQL Server 2008列更改不起作用

SQL Server 2008列更改不起作用,sql,sql-server-2008,varchar,alter-table,Sql,Sql Server 2008,Varchar,Alter Table,我最近刚刚接管了一个SQL Server数据库,包括许多表、存储、过程、触发器等。但我遇到了一个小问题 最初,某个表由三列组成: id、说明、外键 描述列的类型为varchar(3000)。 其中一个开发人员发现3000个字符不够,所以我运行altertable命令将列从varchar(3000)更新为varchar(5000) 开发人员来找我,声称没有解决任何问题。我试图运行direct insert语句,但只看到truncate错误,因为我试图显式插入到描述列中的字符串长度为3010个字符

我最近刚刚接管了一个SQL Server数据库,包括许多表、存储、过程、触发器等。但我遇到了一个小问题

最初,某个表由三列组成:
id、说明、外键

描述列的类型为varchar(3000)。
其中一个开发人员发现3000个字符不够,所以我运行altertable命令将列从varchar(3000)更新为varchar(5000)

开发人员来找我,声称没有解决任何问题。我试图运行direct insert语句,但只看到truncate错误,因为我试图显式插入到描述列中的字符串长度为3010个字符

表定义表示列已更改,我已尝试重新启动服务器,以查看是否有缓存在某个位置的内容可能导致该列更改,但到目前为止没有任何效果


如果有人对运行update命令的原因有任何想法,但是该专栏仍然有一些限制,请在下面提供信息。我们需要在某个时候把它修好。提前感谢大家的帮助。

您是否检查了列定义是否已更改?是否存在检查长度的约束?是否有触发器将数据放入另一个较小的列中?表的名称和收到的错误消息是什么?表的名称与此无关。我猜错误消息可能是“字符串或二进制数据将被截断”。更有用的方法是运行SQL Profiler,同时再次尝试插入并查看发生了什么。这将揭示任何触发因素或其他干扰。检查约束会在错误消息中显示出来。还可以发布sys.columns的
SELECT*结果,其中object\u id=object\u id('TableName')和name='ColumnName'
我已经检查了从触发器到存储过程的所有内容,没有什么可以阻止输入长度超过3000。表定义显示更改也发生了,列现在更新为varchar(5000)。Steve评论中推荐的查询结果如下:object_id=762485795,name=description,column_id=2,system_type_id=167,user_type_id=167,max_length=5000,precision=0,scale=0,collation_name=SQL_Latin1_General_CP1_CI_as,is_nullable=1,is_ansi_padded=1,其余的列都是0,只是为了“那个家伙”。你确定这张桌子对吗?它不是在多个模式中具有相同名称的那些表中的一个,所以您在查看schema.table时应该是schema2.table?