Sql-Server
即使對於“文本”數據類型,也會出現錯誤“字元串或二進制數據將被截斷”
我創建了一個連結伺服器(PostgreSQL)。當我嘗試將數據從 SQL Server 導入到連結伺服器時,出現以下錯誤:
字元串或二進制數據將被截斷
儘管我熟悉這個錯誤,但我從未遇到過文本數據類型的錯誤。我的表中只有文本數據類型。
我想知道連結伺服器有什麼限制嗎?
我創建了一個帶有文本列的測試表。當我嘗試從我的連結伺服器插入時,我不能插入超過 4000 個字元。僅出於測試目的,我這樣做了,但實際上我需要將數據從 SQL 導入 p-sql。
使用 pg admin 在 p-sql 中創建了下表
create table test_sql ( col text )
當我嘗試插入值時
insert into linkedserver.database.schema.table (col) values ('4001 char')
但它無法插入。
我已使用以下查詢成功創建連結伺服器:
EXEC master.dbo.sp_addlinkedserver @server = N'Test_server', @srvproduct=N'PostgreSQL Unicode(x64)', @provider=N'MSDASQL', @provstr=N'Driver=PostgreSQL Unicode(x64);uid=postgres;Server=######;database=test_db;pwd=password;SSLmode=disable;PORT=5432'
正如消息所暗示的那樣,您正試圖將數據放入一個不夠寬的列中。
IIRC Postgre 的文本列是開放大小的,就像 SQL Server 的一樣
[N]VARCHAR(MAX)
,所以我懷疑那裡有一些長值,並且 SQL Server 中表中的目標列是更有限的字元類型(VARCHAR(50)
或類似的。不過,這只是一個猜測。如果沒有您提供的更多詳細資訊,我們將無法再具體化。Postgres 和 SQL Server 中的表定義是什麼?您使用什麼工具來遷移數據(SSIS、普通 SQL 等?)?