是否担心将我的列类型从 text/ntext 更改为 varchar(max)/nvarchar(max)?
它会破坏任何东西吗?例如,具有 ntext 参数的存储过程...
是否担心将我的列类型从 text/ntext 更改为 varchar(max)/nvarchar(max)?
它会破坏任何东西吗?例如,具有 ntext 参数的存储过程...
有一些问题,例如,如果您当前正在使用以下功能:
您可能希望搜索您的代码库以识别这些 - 如果您使用 ad hoc SQL,则对您的应用程序和/或源代码控制进行 grep,或者使用以下命令搜索存储过程等:
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);
以及具有这些列类型的表/视图/TVF,使用:
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
参数,您不应该有任何重大更改,但您不希望长时间保持这种状态。
大多数情况下,您应该体验到更好的性能、更轻松的数据操作以及与新类型的整体改进兼容性。别介意面向未来!