【问题标题】:Querying a SQL Server CE database offline using JOINs when using Microsoft Sync framework使用 Microsoft Sync 框架时使用 JOIN 离线查询 SQL Server CE 数据库
【发布时间】: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

当应用程序在线时,此查询可以正常工作。当应用程序脱机时,我得到了上面关于nTextimage 数据类型的异常。

我也遇到了异常,

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

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

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

有一个可用的热修复程序here,但它早于我机器上的 SQL Server CE 版本。我还没有测试它,因为我担心会弄乱我的开发环境并且非常接近需要完整的构建来演示。

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

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

【问题讨论】:

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


    【解决方案1】:

    使用

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

    【讨论】:

    • 感谢您的回复。这可能会解决排序问题,但我仍然遇到异常:ntext 和 image 数据类型不能在 WHERE、HAVING、GROUP BY、ON 或 IN 子句中使用,除非这些数据类型与 LIKE 或IS NULL 谓词。 奇怪的是,客户端和服务器上的架构都已更改,以确保没有 nvarchar(MAX) 数据类型。
    猜你喜欢
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多