2016-09-06 158 views
-1

我在將數據插入某個表時收到錯誤消息。二進制數據截斷的虛假錯誤消息(Msg 8152)

該字段的數據類型是Varchar(20)和被插入的數據具有最大 數據長度爲6

我不明白哪來的問題。雖然我可以通過添加

SET ANSI_WARNINGS OFF 

避免這種情況,但它會是解決辦法不是解決辦法:

Details

+0

sh.Name可能是nVARCHAR? –

+0

[錯誤,字符串或二進制數據在嘗試插入時會被截斷](http://stackoverflow.com/questions/5591473/error-string-or-binary-data-would-be- truncated-when-試圖插入) –

+0

@MatthiasBurger如果你不明白這個問題,那麼至少不要評論。任何人都可以說「字段長度小於插入值」。 –

回答

1

看來你列的SchemaName 最大長度財產那麼值,你會插入。

根據您的數據更新您的色譜柱長度。

ALTER TABLE Temp ALTER COLUMN SchemaName VARCHAR(XXXX) 
0

您的目標表不足以容納您試圖插入的數據。看起來你的目標大小是varchar(256),但你已經給varchar(10)。只需擴展列大小即可解決此問題。

運行該DDL

Alter table temp alter column SchemaName varchar(256) 
+0

我不明白什麼時候數據長度已經提到是12,所以使用'varchar(256)' –

0

此錯誤來當你的列有大小小於它們。 更新列的大小。

+0

剛剛看到屏幕截圖之前,盲目回答有什麼意思.. –

1

我剛發現這個問題的根本原因。 其實我試圖插入sysname數據類型值到varchar()。 所以必須指定適當的長度來容納sysname數據類型。

+0

啊你已經找到了問題..我看到+1 - 小提示,sysname基本上是nvarchar(128) –

相關問題