我正在使用SQL Server,并且在我的SQL Server中有一个Firebird数据库作为链接服务器。
我正在尝试执行一个从Firebird数据库导入数据的OPENQUERY;
SELECT * FROM OPENQUERY(Workbench, 'SELECT * FROM table_name')我得到了下面的错误。
OLE DB provider "MSDASQL" for linked server "Workbench" returned message "Requested conversion is not supported.".
Msg 7341, Level 16, State 2, Line 4
Cannot get the current row value of column "[MSDASQL].NOTES" from OLE DB provider "MSDASQL" for linked server "Workbench". Firebird数据库中的数据类型NOTES字段为blob。如果我省略了字段NOTES,查询就会执行,并且结果会被正确导入。
但是我需要NOTES字段中的信息,并且正在寻找一种方法来将blob字段type cast到nvarchar。我认为这应该在Openquery中完成(即在查询的火鸟端)。
有没有人能推荐一个纯SQL的解决方案,将blob转换成Firebird中的nvarchar?
发布于 2014-09-12 14:31:42
查看Microsoft KB OLE DB conversion errors may occur
如果这对您不起作用,那么您的现场笔记是大文本还是小于32767个字符?如果它很小,请尝试将其转换为32767 i got from here - limitations in Firebird
SELECT CAST(NOTES AS VARCHAR(32767)), other fields FROM TABLE_NAME首先尝试使用最小的音符和较小的varchar类型转换-看看它是否有效-问题根本就是blob
发布于 2017-10-23 23:05:14
回答晚了,但也许它能帮助一些人...
您可以通过以下语句将blob转换为varchar:
SELECT CAST(SUBSTRING(BlobColumn FROM 1 FOR 32000) AS VARCHAR(32000)) AS NewBlobColumn
FROM TABLE_NAME然后,您可以在OPENQUERY-语句中使用它
发布于 2014-09-24 21:09:33
我相信Firebird blob在MS SQL中是image数据类型,所以先转换为varbinary,再转换为varchar应该会有所帮助。你试过这个吗?
select cast(cast(NOTES as varbinary(max)) as varchar(max)) from openquery(Workbench,'select * from table_name')希望这能有所帮助。
https://stackoverflow.com/questions/23931447
复制相似问题