Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将文本blob从Firebird转换为nvarchar到SQL Server_Sql_Sql Server_Type Conversion_Firebird_Openquery - Fatal编程技术网

将文本blob从Firebird转换为nvarchar到SQL Server

将文本blob从Firebird转换为nvarchar到SQL Server,sql,sql-server,type-conversion,firebird,openquery,Sql,Sql Server,Type Conversion,Firebird,Openquery,我正在使用SQL Server,并且在我的SQL Server中有一个Firebird数据库作为链接服务器 我正在尝试执行OPENQUERY从Firebirddb导入数据 SELECT * FROM OPENQUERY(Workbench, 'SELECT * FROM table_name') 我得到以下错误 OLE DB provider "MSDASQL" for linked server "Workbench" returned message "Requested conversi

我正在使用
SQL Server
,并且在我的SQL Server中有一个
Firebird
数据库作为链接服务器

我正在尝试执行
OPENQUERY
Firebird
db导入数据

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
db中的数据类型
NOTES
字段是
blob
。如果省略字段
NOTES
,则执行查询并正确导入结果

但是我需要
NOTES
字段中的信息,我正在寻找一种方法,将blob字段转换为
nvarchar
。我认为这应该在
Openquery
中完成(即在查询的Firebird端)

有人能推荐一个纯
SQL
解决方案,在
Firebird
中将
blob
转换为
nvarchar

如果这不适合你 您的字段注释是大文本还是相对较小的<32767个字符? 如果它很小-尝试将其转换为varchar

SELECT CAST(NOTES AS VARCHAR(32767)), other fields FROM TABLE_NAME
首先尝试使用最小的音符和较小的varchar cast,看看它是否有效
如果是而不是可能-问题完全在于blob

我相信Firebird
blob
是MS SQL中的
image
数据类型,所以转换到
varbinary
然后转换到
varchar
应该会有所帮助。你试过这个吗

select cast(cast(NOTES as varbinary(max)) as varchar(max)) from openquery(Workbench,'select * from table_name')

希望这有帮助。

迟来的回答,但也许它可以帮助某人

可以通过以下语句将blob强制转换为varchar:

SELECT CAST(SUBSTRING(BlobColumn FROM 1 FOR 32000) AS VARCHAR(32000)) AS NewBlobColumn
FROM TABLE_NAME

然后您可以在OPENQUERY语句中使用它

文本blob的字符集是什么,连接字符集是什么?@markrottevel:谢谢您的回复标记。。对不起,我怎样才能检查那个字符集?请告诉我??对于blob字符集:查看表的DDL,对于连接字符集:查看ODBC数据源的连接字符串。