是否有任何关于将列类型从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%';
您还可以使用以下参数(包括
TEXT
和NTEXT
)识别过程和函数: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/