Sql-Server
查詢失敗
我正在通過連結伺服器執行從 SQL Server 2019(64 位)SSMS 到 AWS 上的 PostgreSQL 的查詢。其他查詢工作正常,但由於消息列,此特定查詢失敗。我的查詢如下:
SELECT * from OPENQUERY (ABC, 'SELECT id, old_message, message FROM actions;')
錯誤資訊:
連結伺服器“DRIQ”的 OLE DB 提供程序“MSDASQL”返回的數據與列“的預期數據長度不匹配”
$$ MSDASQL $$。資訊’。(最大)預期數據長度為 1400,而返回的數據長度為 1510。
查詢在沒有消息列的情況下工作正常。但是當我添加消息列時,它開始給我一個上述錯誤。消息列的數據類型是 postgres db 中的 JSON。對於 ODBC,我使用的是 64 位 Unicode(x64),我的數據庫的兼容性級別是 150。那麼如何獲取 sql server 2019 中的 message(json) 列的數據?
換個驅動試試?
SQL Server 和 PostgreSQL 連結伺服器配置
您可能還想嘗試將列隱式轉換為 tsql 數據類型,即
SELECT CAST(Id AS INT) AS Id, CAST(old_message AS NVARCHAR(MAX)) AS old_message, CAST(message AS NVARCHAR(MAX)) AS message FROM OPENQUERY...
似乎 PostgreSQL 發送的數據比 SQL Server 預期的要多。我會嘗試使用 PostgreSQL 函式將數據列轉換為更廣泛的內容(即相當於 Cast 或 Convert),以便 SQL Server 不會阻塞返回的數據。
如果您將其轉換為 ,它會起作用
text
嗎?例如message::text
或者也許是一個大的varchar?
message::varchar(8000)
?