【发布时间】:2013-01-16 16:16:17
【问题描述】:
运行我的应用程序时出现此错误,使用同步框架构建,离线
ntext 和 image 数据类型不能用于 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
当应用程序在线时,此查询可以正常工作。当应用程序脱机时,我得到了上面关于nText 和image 数据类型的异常。
我也遇到了异常,
大对象(ntext 和 image)不能在 ORDER BY 子句中使用。
在运行与上述类似的查询时。
在我的数据库中没有包含这些数据类型的列。从周围阅读看来,varbinary(MAX) 和 nvarchar(MAX) 数据类型在本地 SQL Server CE 数据库上分别转换为 image 和 nText。为了解决这个问题,我将数据类型更改为 nvarchar(4000) 和 varbinary(4000),但问题仍然存在。
有一个可用的热修复程序here,但它早于我机器上的 SQL Server CE 版本。我还没有测试它,因为我担心会弄乱我的开发环境并且非常接近需要完整的构建来演示。
我还玩弄了在内存中为每个表创建 DataTables 并查询这些表的想法,但这也没有成功。
目前我没有想法,非常感谢任何帮助。
【问题讨论】:
标签: vb.net sql-server-ce microsoft-sync-framework