是否有关于将我的列类型从text / ntext更改为varchar(max)/ nvarchar(max)的问题?
它会破坏什么吗?例如,具有ntext参数的sprocs ......
答案 0 :(得分:6)
有一些问题,例如,如果您当前正在使用以下功能:
您可能希望执行代码库搜索以识别这些内容 - 如果您使用临时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);
包含以下列类型的表/视图/ TVF:
SELECT OBJECT_SCHEMA_NAME([object_id]), OBJECT_NAME([object_id]), name
FROM sys.columns
WHERE system_type_id IN (35, 99);
或 - 我不确定所有的API /提供商 - 但是有些问题可能会更换ntext
的{{1}}参数(您可能必须明确更改某些代码才能指定最大长度为-1)。自从我使用接口代码时,这些类型仍处于时尚状态(~1999)已经有很长一段时间了,所以如果我的记忆在那里朦胧,我会道歉。
如果您的存储过程继续采用nvarchar
参数,则不应进行任何重大更改,但您不会希望长时间保留这些参数。
大多数情况下,您应该体验到更好的性能,更轻松的数据操作以及与新类型的整体改进兼容性。不要介意面向未来!