sql-server - 从 ntext 转移到 nvarchar(max) 有什么问题吗

标签 sql-server database sql-server-2008

将我的列类型从 text/ntext 更改为 varchar(max)/nvarchar(max) 是否有任何问题?

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

最佳答案

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

您可能想要搜索您的代码库以识别这些 - 如果您使用即席 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);

具有这些列类型的表/ View /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),我已经很长时间没有编写接口(interface)代码了,所以如果我的内存在那里模糊不清,我深表歉意。

如果您的存储过程继续采用 NTEXT 参数,您不应该进行任何重大更改,但您不希望长期保留这些参数。

大多数情况下,您应该会体验到更好的性能、更轻松的数据操作以及与新类型的整体改进的兼容性。没关系面向 future !

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

相关文章:

c# - Entity Framework Core 通过 SSH 隧道连接到 MSSQL 数据库

sql - 将条件合并到一个地方

mysql - 正确的数据库设计

php - 使用 CodeIgniter 查询数据库以获取过去一周内提交的条目?

sql - 如何启用即席分布式查询

C# 十进制转 SQL Server Money

tsql - 我应该如何在 Sql Server 中执行此操作(业务逻辑)?约束?

c# - 将 NULL 插入 SQL Server 数据库

sql-server - 切换到 UTF-8 时最大的风险是什么?

sql - 与 SQL 数据匹配并分配身份 ID