1

是否担心将我的列类型从 text/ntext 更改为 varchar(max)/nvarchar(max)?

它会破坏任何东西吗?例如,具有 ntext 参数的存储过程...

4

1 回答 1

6

有一些问题,例如,如果您当前正在使用以下功能:

您可能希望搜索您的代码库以识别这些 - 如果您使用 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%';

您还可以使用以下参数识别过程和函数(我包括了TEXTNTEXT):

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参数,您不应该有任何重大更改,但您不希望长时间保持这种状态。

大多数情况下,您应该体验到更好的性能、更轻松的数据操作以及与新类型的整体改进兼容性。别介意面向未来!

于 2012-07-06T00:36:38.370 回答