sql server和openquery对sqlite使用count(*)

sql server和openquery对sqlite使用count(*),sqlite,sql-server-2012,openquery,Sqlite,Sql Server 2012,Openquery,我通过sql server中的链接服务器连接了sqlite数据库。 以下查询工作正常: select * from openquery( eod, 'select id, min(dt) as mindt, max(dt) as maxdt from [tdata] group by id' ) 但此查询返回一个错误: select * from openquery( eod, 'select COUNT(*) as cnt from [tdata]' ) 错

我通过sql server中的链接服务器连接了sqlite数据库。 以下查询工作正常:

select *
from openquery(
    eod, 
    'select id, min(dt) as mindt, max(dt) as maxdt from [tdata] group by id'
)
但此查询返回一个错误:

select *
from openquery(
    eod,
   'select COUNT(*) as cnt from [tdata]'
)
错误是:

链接服务器“eod”的OLE DB提供程序“MSDASQL”为列提供了不一致的元数据。据报告,对象“select COUNT(*)as cnt from[tdata]”的列“cnt”(编译时序号1)在编译时的“DBTYPE”为129,在运行时为3


什么可能出错以及如何修复?

错误消息中的数据类型提供了解决问题的线索。从:

无论出于何种原因,在编译时都假定查询返回字符串

尝试按预期返回字符串(符合怪癖通常是找到解决方案的最快途径):

或者尝试显式返回类型,如果框架无法处理64位整数,请选择32位整数:

select cast(COUNT(*) as int) as cnt from [tdata]


另一个Microsoft stuff“不工作”的例子。错误消息中的数据类型提供了解决问题的线索。从:

无论出于何种原因,在编译时都假定查询返回字符串

尝试按预期返回字符串(符合怪癖通常是找到解决方案的最快途径):

或者尝试显式返回类型,如果框架无法处理64位整数,请选择32位整数:

select cast(COUNT(*) as int) as cnt from [tdata]


另一个微软产品“不起作用”的例子。

谢谢,varchar就是答案。在发布问题之前,我尝试将其转换为int。没有运气。再次感谢!谢谢,瓦查尔是答案。在发布问题之前,我尝试将其转换为int。没有运气。再次感谢!
select cast(COUNT(*) as int) as cnt from [tdata]