是否有任何关于将列类型从text/ntext更改为varchar(max)/nvarchar(max)的问题?
它能打破什么吗?例如,具有ntext参数的存储过程…

最佳答案

有几个问题,例如,如果您当前正在使用以下函数:
UPDATETEXT
WRITETEXT
READTEXT
TEXTPTR
您可能希望对代码库执行搜索以识别这些代码-如果使用特殊SQL,请重新映射应用程序和/或源代码管理,或者使用以下方法搜索存储过程等:

SELECT OBJECT_SCHEMA_NAME([object_id]), OBJECT_NAME([object_id])
  FROM sys.sql_modules
  WHERE [definition] LIKE '%WRITETEXT%'
     OR [definition] LIKE '%READTEXT%'
     OR [definition] LIKE '%UPDATETEXT%'
     OR [definition] LIKE '%TEXTPTR%';

您还可以使用以下参数(包括TEXTNTEXT)识别过程和函数:
SELECT OBJECT_SCHEMA_NAME([object_id]), OBJECT_NAME([object_id]), name
  FROM sys.parameters
  WHERE system_type_id IN (35, 99);

以及使用以下列类型的表/视图/tvfs:
SELECT OBJECT_SCHEMA_NAME([object_id]), OBJECT_NAME([object_id]), name
  FROM sys.columns
  WHERE system_type_id IN (35, 99);

或者-我不确定所有的api/提供者-但是有些可能会有一个问题,把ntext参数换成nvarchar(并且您可能需要显式地更改一些代码来指定-1的最大长度)。很长一段时间以来,当这些类型仍然流行时(1999年),我一直在研究接口代码,所以如果我的记忆有点模糊,我很抱歉。
如果存储过程继续使用NTEXT参数,则不应该有任何中断性更改,但您不会希望长时间保留这些更改。
大多数情况下,您只需体验更好的性能、更轻松的数据操作,以及与新类型的总体兼容性改进。不用担心将来的事!

关于sql-server - 从ntext到nvarchar(max)是否有任何问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11354290/

10-11 20:02