Tsql 如何在SQL Server 2016中识别截断列

Tsql 如何在SQL Server 2016中识别截断列,tsql,sql-server-2016,Tsql,Sql Server 2016,我一直在尝试使用下面的代码,但它似乎不起作用 DBCC TRACEON (460); DECLARE @aa as TABLE (name varchar(5)) INSERT INTO @aa SELECT '1234567890' 错误 字符串或二进制数据将被截断 预期错误: 字符串或二进制数据将在表@aa(列名)中被截断。截断值:“1234567890” 根据SQL Server,2019将能够识别已被截断的列,但可以在SQL Server 2016中使用TRACEON 460 就

我一直在尝试使用下面的代码,但它似乎不起作用

DBCC TRACEON (460); 

DECLARE @aa as TABLE (name varchar(5))

INSERT INTO @aa
SELECT '1234567890'
错误

字符串或二进制数据将被截断

预期错误:

字符串或二进制数据将在表@aa(列名)中被截断。截断值:“1234567890”

根据SQL Server,2019将能够识别已被截断的列,但可以在SQL Server 2016中使用TRACEON 460

就角色而言,我有“public”、“processadmin”和“sysadmin”

在sys.messages中,我认为此功能的修补程序基于message_id=2628:

+------------+------------------------------------------------------------------------------------------------------+
| message_id | text                                                                                                 |
+------------+------------------------------------------------------------------------------------------------------+
| 2628       | String or binary data would be truncated in table '%.*ls', column '%.*ls'. Truncated value: '%.*ls'. |
| 8152       | String or binary data would be truncated.                                                            |
+------------+------------------------------------------------------------------------------------------------------+
详情:

Microsoft SQL Server 2016 Standard (64-bit)
Version : 13.0.5149.0
Is Clustered : False
Is HADR Enabled : False
Is XTP Supported : True

新的错误消息尚未重新移植到SQL Server 2016。来自(我的):

这条新消息也是后端口的。。。(在即将到来的SQL Server 2016 SP2 CU中,

此CU尚未交付。最近的一个版本是CU5(13.0.5264.1),于1月份发布,但没有包括它


还有一个小小的修正,就是在SQL Server 2019 CTP中,您也需要选择这种行为(通过跟踪标志)。原因是产生了不同的错误号,这可能会破坏现有的应用程序和基于错误号的单元测试。当SQL Server 2019发布时,这将被记录为一个突破性的变化,但我相信,当一些人升级时,它仍然会影响他们。

有趣。谢谢你提供关于这件事的清晰细节,可惜我现在急需这个功能。不管怎样,我认为他们应该在SQL Server 2019上接受向后兼容性的打击,而不需要traceon。我不认为单元测试错误数字与整体好处相比有那么大的意义,因为只要生产数据库迁移到更高的版本,单元测试就应该得到纠正。以我的想法,我认为我不会是一个好的DBA。lol@Earl发布时不需要trace标志,我只是对当前状态进行评论。