Sql server 如何在sql server中获取由于coulmn大小问题导致插入失败的列名

Sql server 如何在sql server中获取由于coulmn大小问题导致插入失败的列名,sql-server,Sql Server,在尝试将下面的记录插入“我的用户”表时,sql server向我显示字符串或二进制数据将被截断的错误消息 如何获取插入操作失败的确切列名 insert Users(name,age) values ('DummyUser',20); TABLE [dbo].[Users]( [name] [nvarchar](4) NULL, [age] [int] NULL SQL Server最大列数限制 每个短字符串列8000字节 每组字节数,按8060排序 每行字节数8060 每个索引键16的列 每

在尝试将下面的记录插入“我的用户”表时,sql server向我显示字符串或二进制数据将被截断的错误消息

如何获取插入操作失败的确切列名

insert Users(name,age) values ('DummyUser',20);

TABLE [dbo].[Users](
[name] [nvarchar](4) NULL,
[age] [int] NULL

SQL Server最大列数限制

每个短字符串列8000字节

每组字节数,按8060排序

每行字节数8060

每个索引键16的列

每个外键16的列

每个主键的列16

每个非宽表1024的列数

每宽表中的列数30000

每个SELECT语句的列4096

每个INSERT语句的列4096

每个UPDATE语句的列宽表4096

组合每行超过8060字节的varchar、nvarchar、varbinary、sql_variant或CLR用户定义类型列时

创建具有n列数和数据类型Nvarchar的表


不幸的是,没有办法知道哪一列是罪魁祸首。你需要经历一个恼人的消除过程

有一个长期未解决的请求需要改进此处的错误消息:

CREATE Proc [dbo].[CreateMaxColTable_Nvarchar500]
(@TableName nvarchar(100),@NumofCols int)
AS
BEGIN

DECLARE @i INT
DECLARE @MAX INT
DECLARE @SQL VARCHAR(MAX)
DECLARE @j VARCHAR(10)
DECLARE @len int
SELECT @i=1
SELECT @MAX=@NumofCols
SET @SQL='CREATE TABLE ' + @TableName + '('

WHILE @i<=@MAX

BEGIN
select @j= cast(@i as varchar)
SELECT @SQL= @SQL+'X'+@j  +' NVARCHAR(500) , '
SET @i = @i + 1
END
select @len=len(@SQL)

select  @SQL = substring(@SQL,0,@len-1)


SELECT @SQL= @SQL+ ' )'

exec (@SQL)

END