FIX: 執行到實體設定 LINQ 」 查詢時, 的錯誤訊息會使用字串參數或二進位的參數對 SQL Server Compact 3.5 資料庫:"的 ntext 和影像資料型別不能用在 WHERE,HAVING,分組 BY ON,或 IN 子句"

文章翻譯 文章翻譯
文章編號: 958478 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文將告訴您下列關於此 Hotfix 版本:
  • Hotfix 套件所修正的問題
  • 安裝 Hotfix 套件的先決條件
  • 是否您必須重新啟動電腦安裝 Hotfix 套件之後
  • 是否 Hotfix 套件就會取代任何其他 Hotfix 套件
  • 您必須在是否做任何登錄變更
  • 包含在 Hotfix 套件中的檔案

徵狀

考慮下列案例。應用程式使用 Microsoft ADO.NET Entity Framework 隨附於 Microsoft.NET Framework 3.5 Service Pack 1 存取 Microsoft SQL Server Compact 3.5 資料庫中。在應用程式執行到實體設定 LINQ"查詢字串參數或二進位的參數對資料庫所使用。在這種情況下您收到下列錯誤訊息,當您執行應用程式:
ntext 與 image 資料型別不能用於 WHERE,HAVING、 GROUP BY,開啟,或 IN 子句時與 [LIKE 搭配使用,這些資料型別,,除非或 IS NULL 述詞。

發生的原因

參數用於應用程式中以實體設定 LINQ 」 查詢時您無法指定基底的資料庫類型。SQL Server Compact Entity Framework 提供者會嘗試建立提供者層級參數根據實體資料模型 (EDM) Facet 的原始的參數。SQL Server 壓縮不支援 nvarchar(max) 資料型別或 varbinary(max) 資料型別。因此,當提供者中選取資料型別參數的 Edm.String 資料型別或 Edm.Binary 資料型別時提供者必須標示為其中一個根據 EDM Facet 參數的下列資料類型的參數:
  • 字串參數的提供者選取 nvarchar(4000) 資料型別或 ntext 資料型別。
  • 二進位參數的提供者選取 varbinary(4000) 資料型別或 影像 資料型別。
如果提供者將標示為 nvarchar(4000) 資料型別或 varbinary(4000) 資料型別參數,您嘗試插入大於 8,000 個位元組的值時,就會發生錯誤。 此外,如果提供者將標示為 ntext 資料型別或 影像 資料型別參數,如果會發生錯誤正在參數上執行任何相等作業、 群組作業或排序作業。

解決方案

Hotfix 資訊

Microsoft 提供支援的 Hotfix。不過,此 Hotfix 旨在修正本文中所述隨問題。請您僅在遇到本文所述問題的系統上安裝這個 Hotfix。這個 Hotfix 可能會接受額外的測試。因此,如果您不會嚴重影響這個問題,我們建議您等候下一個包含此 Hotfix 的軟體更新。

如果此 Hotfix 可供下載,您可在本知識庫文件的頂端找到「 可用的 Hotfix 下載 」區段。如果本節 Does Not Appear 請連絡[ Microsoft 客戶服務 ] 和 [ 支援 ] 以取得此 Hotfix。

附註如果發生其他問題,或如果需要任何疑難排解,您可能必須建立個別的服務要求。和此 Hotfix 無關的額外支援問題適用一般的支援費用。如需 Microsoft 客戶服務支援部門電話號碼的完整清單或要建立個別的服務要求,請造訪下列 Microsoft 網站:
http://support.microsoft.com/contactus/?ws=support
附註「 下載 Hotfix 」 表單會顯示此 Hotfix 會出現,以供使用的語言。如果您沒有看到您的語言,是因為此 Hotfix 是不適用您的語言。

必要條件

若要將這個 Hotfix 中,您必須解除安裝先前安裝的 SQL Server Compact 3.5 Service Pack 1 以安裝此 Hotfix 所提供的.msi 檔案。如果請勿解除安裝先前安裝的 SQL Server Compact 3.5 Service Pack 1,您會收到安裝錯誤訊息,指出已安裝較新版的 SQL Server 壓縮。如需有關 SQL Server Compact 3.5 Service Pack 1,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
955965描述 SQL Server 壓縮 3.5 Service Pack 1

重新啟動資訊

您沒有套用此 Hotfix 之後重新啟動電腦。

登錄資訊

您沒有變更登錄。

Hotfix 檔案資訊

此 Hotfix 包含只需修正本文所列問題的那些檔案。此 Hotfix 並未包含必須將產品完整更新至最新版組建的所有檔案。

此 Hotfix 的英文版在檔案屬性 (或更新版本的檔案屬性) 如下列表格中所列。這些檔案的日期和時間為 Coordinated Universal Time (UTC)。當您檢視檔案資訊時,會將它轉換為當地時間。若要到 UTC 與當地時間差異使用在 [日期及時間 中項目控制台中的 [時區] 索引標籤]。
摺疊此表格展開此表格
檔案名稱檔案版本檔案大小日期時間平台
System.Data.sqlserverce.entity.dll3.5.5692.1230,4802008 年九月 24 日06: 46x86 / x 64/IA-64
System.Data.sqlserverce.dll3.5.5692.1271,4402008 年九月 24 日06: 46x86 / x64
Policy.3.5.System.Data.sqlserverce.dll3.5.5692.113,3922008 年九月 24 日06: 46x86 / x64
Policy.3.5.System.Data.sqlserverce.entity.dll3.5.5692.113,3922008 年九月 24 日06: 46x86 / x64
Sqlceca35.dll3.5.5692.1343,1042008 年九月 24 日08: 07x86
Sqlcecompact35.dll3.5.5692.184,5442008 年九月 24 日08: 07x86
Sqlceer35en.dll3.5.5692.1148,0322008 年九月 24 日08: 07x86
Sqlceme35.dll3.5.5692.165,0882008 年九月 24 日08: 07x86
Sqlceoledb35.dll3.5.5692.1172,6082008 年九月 24 日08: 07x86
Sqlceqp35.dll3.5.5692.1644,1602008 年九月 24 日08: 07x86
Sqlcese35.dll3.5.5692.1348,2242008 年九月 24 日08: 07x86

狀況說明

Microsoft 已確認<適用於>一節所列之 Microsoft 產品確實有此問題。

其他相關資訊

套用此 Hotfix 之後,提供者並不猜測資料型別參數的 EDM.String 資料型別或 EDM.Binary 資料型別。查詢處理器會選取正確的資料型別參數根據值或資料行至 equated 參數或與使用該參數。

例如在下列的實體 SQL 查詢中查詢處理器選取 ntext 資料型別 名稱 參數之前套用這個 Hotfix。
String name = "XYZ";
var q = from e in nwind.Employees
           where e.First_Name = name
           select e;
套用此 Hotfix 之後,名稱 參數為所選取的 First_Name 欄的資料類型。

不過,在下列範例以實體設定 LINQ 」 查詢失敗,因為 名稱 參數不會也 equated 到不搭配其他值或資料行。
String name = "XYZ";
var q = from e in nwind.Employees
           select name;
這個 Hotfix 也會解析為 SQL Server Compact 3.5 讀我檔案文件中描述的已知的問題。 如需詳細資訊請參閱 「 SQL 伺服器開始壓縮 3.5 SP1 執行階段問題的 [ADO.NET Entity Framework 」 一節的下列 Microsoft 網站:
http://download.microsoft.com/download/2/e/c/2ec70436-aef2-4ccb-93a3-ea2f3e20f77d/ReadmeSSC35.htm
此 Hotfix 解決了問題與不正確,當提供者將轉換套用建構的數值類子查詢時,就會產生 Transact-SQL 陳述式相關。

附註相關子查詢會在內部轉換為數值類子查詢。這個版本不支援相關子查詢。您在執行這些查詢時您會收到下列錯誤訊息:
執行命令定義時發生錯誤。請參閱內部例外狀況,如需詳細資訊。
內部例外狀況包含下列訊息:
剖析查詢時發生錯誤。[..,語彙基元中錯誤 = AS]
原因是 ADO.NET Entity Framework 用解譯為具有 CROSS APPLY 聯結類型或 OUTER APPLY 聯結類型的查詢輸入的查詢。如果聯結條件的右邊顯示傳回純量值,聯結就會被轉換成純量子查詢。若要將該純量子查詢轉換成相等的查詢的 [OUTER APPLY 聯結類型,支援的 SQL Server 開始壓縮有 ADO.NET Entity Framework 提供者的 SQL Server 壓縮。不過,此版本中這種轉換不是完成正確。比方說下列查詢在此版本中會發生錯誤。
C# Sample Application:
using (NorthwindEntities nwEntities = new NorthwindEntities())
{
    var orders = nwEntities.Employees
                .Select(employee => employee.Orders.Max(order => order.Order_ID));
    foreach (var order in orders)
    {
       Console.WriteLine(order.ToString());
    }
}
如 SQL Server 更新命名的結構描述的更多有關,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
822499Microsoft SQL Server 軟體更新套件的新命名結構描述
如需有關軟體更新術語的詳細資訊,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
824684用來描述 Microsoft 軟體更新標準術語的說明

屬性

文章編號: 958478 - 上次校閱: 2009年2月17日 - 版次: 1.1
這篇文章中的資訊適用於:
  • Microsoft SQL Server Compact 3.5
關鍵字:?
kbmt kbexpertiseadvanced kbfix kbautohotfix kbsurveynew kbqfe kbhotfixserver KB958478 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:958478
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com