使用Microsoft Sync框架时使用JOIN脱机查询SQL Server CE数据库

时间:2013-01-16 16:16:17

标签: vb.net sql-server-ce microsoft-sync-framework

运行使用同步框架构建的应用程序时,我收到此错误,OFFLINE

  

ntext和图像数据类型不能在WHERE,HAVING,GROUP中使用   BY,ON或IN子句,除非这些数据类型与。一起使用   LIKE或IS NULL谓词。

我有一个包含一些测试的数据库TestOptions。另一个名为CreateScript的测试集合。这些表用于填充列表视图,并执行测试。

使用Sync框架,这些表已在本地克隆为SQL Server CE表。

用户选择所需的测试,结果存储在结果表中。

在填充列表视图时,使用包含所有这三个表的两个连接来运行查询,以收集测试数据。

select 
    TestType, TestName, LowerLimits, UpperLimits 
from 
    CreateScriptTable 
inner join 
    TestOptionsTable on CreateScriptTable.TestType = TestOptionsTable.TestName 
LEFT JOIN 
    TestResultsTable on CreateScriptTable.TestType = TestResultsTable.TestName 
WHERE 
    CreateScriptTable.InstrumentType= 'type1' 
ORDER BY 
    [Index] ASC

当应用程序在线时,此查询可正常运行。当应用程序离线时,我会收到有关nTextimage数据类型的上述异常。

我也得到例外,

  

大对象(ntext和图像)不能在ORDER BY子句中使用。

运行与上述类似的查询时。

在我的数据库中,没有包含这些数据类型的列。从阅读开始,似乎varbinary(MAX)nvarchar(MAX)数据类型分别在本地SQL Server CE数据库上强制转换为imagenText。为了解决这个问题,我将数据类型更改为nvarchar(4000)varbinary(4000),但问题仍然存在。

有一个热修复可用here但它早于我的计算机上的SQL Server CE版本。我还没有测试过,因为我担心搞乱我的开发环境而且非常接近需要一个完整的版本来演示。

我还想到了为每个表创建内存DataTables并查询这些内容的想法,但这也没有成功。

目前我没有想法,非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

使用

ORDER BY CAST ([Index] as nvarchar(4000))