Sql server 如何在sql server中获取由于coulmn大小问题导致插入失败的列名
在尝试将下面的记录插入“我的用户”表时,sql server向我显示字符串或二进制数据将被截断的错误消息 如何获取插入操作失败的确切列名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的列 每
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