Tsql SQL Server 2000-如何将列从文本更改为ntext?

Tsql SQL Server 2000-如何将列从文本更改为ntext?,tsql,sql-server-2000,Tsql,Sql Server 2000,我试图做一个改变表签名改变列HTML-ntext但我得到一个无法更改列“HTML”,因为它是“text”。 我该如何更改该列?你不能。您需要创建一个新表(包括权限、触发器等),复制数据,然后删除旧表。或者您可以将HTML重命名为HTMLLD,然后创建一个新的HTML列,即ntext。然后用HTML旧数据更新新列,然后删除HTMLLD列 (顺便说一句,当您离开SQL Server 2000时,您需要开始删除这些文本和ntext列,因为它们已被弃用,并且在SQL Server的下一版本中将不可用。)

我试图做一个
改变表签名改变列HTML-ntext但我得到一个
无法更改列“HTML”,因为它是“text”。


我该如何更改该列?

你不能。您需要创建一个新表(包括权限、触发器等),复制数据,然后删除旧表。

或者您可以将HTML重命名为HTMLLD,然后创建一个新的HTML列,即ntext。然后用HTML旧数据更新新列,然后删除HTMLLD列

(顺便说一句,当您离开SQL Server 2000时,您需要开始删除这些文本和ntext列,因为它们已被弃用,并且在SQL Server的下一版本中将不可用。)

1)在表上创建数据类型为ntext的新列 2) 运行update语句将html复制到新的ntext列 3) 删除html列
4) 将新列重命名为html(如果需要)

您可以通过两个步骤完成此操作:

-- first alter from text to varchar
ALTER TABLE table_1 ALTER COLUMN [test] [varchar](max) NULL;
-- and finally to ntext
ALTER TABLE table_1 ALTER COLUMN [test] [ntext]  NULL;

... 或者只是在现有表中创建一个新列,复制数据,删除旧列,这样就不必删除所有触发器、权限等。varchar(max)和nvarchar(max)@infografnet,我刚刚找到了这个答案,它帮助了我,谢谢。但是你能解释一下为什么这个中间步骤是必要的吗?顺便说一句,我的MSSQL版本是2014年。