我正在尝试更改表“Post”中“Body”列的长度,如下所示:
ALTER TABLE Post ALTER COLUMN Body nvarchar(8000) NOT NULL;
该列定义为 nvarchar(4000) ,它给了我这个错误:
消息 2717,级别 16,状态 2,第 1 行 给参数“正文”的大小 (8000) 超过了允许的最大值 (4000)。
原文由 Mário Tomé 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在尝试更改表“Post”中“Body”列的长度,如下所示:
ALTER TABLE Post ALTER COLUMN Body nvarchar(8000) NOT NULL;
该列定义为 nvarchar(4000) ,它给了我这个错误:
消息 2717,级别 16,状态 2,第 1 行 给参数“正文”的大小 (8000) 超过了允许的最大值 (4000)。
原文由 Mário Tomé 发布,翻译遵循 CC BY-SA 4.0 许可协议
对于约束,您可以使用以下
DECLARE @DEFCONSTRAINT VARCHAR(1000);
DECLARE @DropDFConstraitCmd VARCHAR(1000);
DECLARE @AlterDFColumnCmd VARCHAR(1000);
DECLARE @CreateDFConstraitCmd VARCHAR(1000);
DECLARE @CONSTRAINT_SAYI NUMERIC;
SET @DEFCONSTRAINT=(SELECT name
FROM sys.sysobjects
WHERE type = 'D' AND OBJECT_NAME(parent_obj) = 'TABLENAME' and name like 'DF__TABLENAME__COLUMNNAME%');
SET @CONSTRAINT_SAYI=(SELECT count(*)
FROM sys.sysobjects
WHERE type = 'D' AND OBJECT_NAME(parent_obj) = 'TABLENAME' and name like 'DF__TABLENAME__COLUMNNAME%');
SET @DropDFConstraitCmd = ' ALTER TABLE TABLENAME DROP CONSTRAINT ' +@DEFCONSTRAINT;
SET @AlterDFColumnCmd = ' ALTER TABLE TABLENAME ALTER COLUMN COLUMNNAME nvarchar(max) NOT NULL';
SET @CreateDFConstraitCmd = ' ALTER TABLE TABLENAME ADD CONSTRAINT ' +@DEFCONSTRAINT + ' DEFAULT ('' '') FOR COLUMNNAME ';
if @CONSTRAINT_SAYI > 0
exec (@DropDFConstraitCmd);
exec (@AlterDFColumnCmd);
exec (@CreateDFConstraitCmd);
原文由 Alper Akbulak 发布,翻译遵循 CC BY-SA 4.0 许可协议
改用 Max。如果该列被声明为 VARCHAR,8000 就可以了。