簡介

本文將說明 Microsoft SQL Server Compact 3.5 Service Pack 1 (SP1)。 SQL Server Compact 3.5 SP1 會更新 SQL Server Compact 3.5 的發行版本本。 本文包含下列專案:

其他相關資訊

版本資訊

版本歷程記錄

下列清單包含不同版本的 Microsoft SQL Server Compact:

  • 版本 3.5 SP1 Microsoft SQL Server Compact 3.5 Service Pack 1 (SP1)。 這個 service pack 是與 Microsoft Visual Studio 2008 Service Pack 1 (SP1)搭配 Microsoft SQL Server 2008 發佈。

  • 版本3。5 Microsoft SQL Server Compact 3.5。 這個版本已與 Microsoft Visual Studio 2008 一起發行。

  • 版本3。1 Microsoft SQL Server 2005 精簡版。 此版本的發行時間與 Microsoft Visual Studio 2005 Service Pack 1 (SP1)及 Microsoft SQL Server 2005 Service Pack 2 (SP2)的整合同時進行。

  • 版本3。0 Microsoft SQL Server 2005 行動版(SQL Server Mobile)。 這個版本已與 Microsoft Visual Studio 2005 搭配 Microsoft SQL Server 2005 一起發行。

  • 版本2。0 Microsoft SQL Server 2000 Windows CE 版2.0 (SQL Server CE 2.0)。 這個版本已與 Microsoft Visual Studio 2003 一起發行。

新功能

SQL Server Compact 3.5 SP1 包含下列新功能:

  • ADO.NET 實體架構的支援。 實體架構可讓您使用網域特定物件和屬性(例如客戶和客戶位址)的形式來處理資料,而不需要自行考慮儲存此資料的基礎資料庫資料表和欄。 注意: 支援 ADO.NET 實體架構可讓您透過直接從開發環境使用 LINQ 運算式和 LINQ 標準查詢運算子,為實體架構物件內容建立彈性且強型別的查詢。

  • 在資料庫層級支援區分大小寫的排序規則。

  • 在 SQL server 2008 中使用 SQL Server Management Studio (SSMS),在 Windows Mobile 裝置或桌上型電腦上管理的 SQL Server Compact 資料庫的管理。

  • 在 SQL Server 2008 中複製新的資料類型。 這些資料類型包括 日期、 時間、 datetime2、 datetimeoffset、 geography和 幾何圖形。 SQL Server 2008 中的新資料類型會對應到 Nchar、 Nvarchar、 image等。

  • 原生64位支援。 未變更32位支援。

  • 支援使用 sql server 2008 與 sql server 2005 進行資料複製,以及使用 Microsoft 同步處理服務 ADO.NET 1.0 Service Pack 1 (SP1)與 SQL Server 2000。 桌面和行動裝置都能使用適用于 ADO.NET 1.0 SP1 的 Microsoft 同步處理服務。

  • 支援使用合併複製與遠端資料存取(RDA)的 SQL Server 2008 與 SQL Server 2005 進行資料複製。

  • 改良 SQL Server Compact 與 SQL Server 的版本相容性,以進行合併複製。

  • SQL Server Compact 3.5 SP1 伺服器工具

    • 可以在 SQL Server Compact 3.5 與 SQL Server 2008 或 SQL Server 2005 之間複製資料。

    • 支援 SQL Server 2005 Compact Edition 或 SQL Server 2005 Mobile Edition 與 SQL server 2008 或 sql server 2005 之間的資料複製。

    • 在充當執行網際網路資訊服務(IIS)之伺服器的電腦上,不能與早期版本的伺服器工具並排安裝。

  • 支援 Windows Server 2008。

除了此處所列的新功能之外,SQL Server Compact 3.5 SP1 還包含 SQL Server Compact 3.5 中包含的下列新功能:

  • 實現時間戳記(ROWVERSION)資料類型。 ROWVERSION 是一種資料類型,可公開自動產生且可保證在資料庫中唯一的二進位數。 通常,此資料類型是用來做為表格列的版本戳的機制。

  • 支援桌上型電腦上的本機事務範圍。

  • 將改良功能新增至 Visual Studio 2008 中的資料表設計工具,以提供在資料表之間建立主鍵與外鍵關聯的使用者介面。

  • 延伸對 Transact-sql 語句的支援,如下所示:

    • FROM 子句中的巢狀查詢

    • [交叉套用] 與 [外部] 套用

    • 返回頁首

    • 設定身分識別插入

  • 支援任何地區設定的 Unicode 字元。 這包括中文 GB 18030 字元。

  • 支援開發使用 Microsoft Visual c # 2008 速成版和 Microsoft Visual Basic 2008 速成版的桌面應用程式。

  • 在桌上型電腦上並排支援 SQL Server 2005 精簡版。

  • 支援舊版作業系統的向後相容加密模式,這些作業系統具有較舊的加密演算法,並新增較新的、更好的加密。

  • 支援 LINQ to SQL。 LINQ to SQL 是 LINQ 專案的元件。 LINQ to SQL 提供的執行時間基礎結構可將關聯式資料管理成物件,而不會提供查詢能力。 它會透過 SQL Server Compact 將語言整合查詢轉換成 Transact-sql,然後將表格式結果轉譯回由軟體發展人員定義的物件。 在 LINQ to SQL 中沒有 SQL Server Compact 的設計工具支援。 SqlMetal 實用程式必須用於 SQL Server Compact。 SqlMetal 命令列工具會針對 Microsoft .NET Framework 的 LINQ to SQL 元件產生程式碼及對應對應。 根據預設,SqlMetal 檔案位於下列資料夾中:

    %ProgramFiles%\Microsoft SDKs\Windows\vn.nn\Bin SqlMetal 命令列工具可用於下列用途:

    • 從資料庫中產生原始程式碼及對應屬性或對應檔案

    • 從資料庫產生中間資料庫標記語言(.dbml)檔案以進行自訂

    • 從 .dbml 檔案,以產生程式碼及對應屬性或對應檔

已發行的語言

所有套件的 SQL Server Compact 3.5 SP1 已發行成下列語言:

  • 英語

  • 巴西葡萄牙文

  • 簡體中文

  • 繁體中文

  • 法語

  • 德語

  • 義大利文

  • 日文

  • 韓文

  • 俄語

  • 西班牙文

支援的平臺

您可以在下列平臺上安裝 SQL Server Compact 3.5 SP1:

Windows 桌上型電腦
  • Windows Server 2008 標準版伺服器

  • Windows Server 2008 標準伺服器(不含 Hyper-v)

  • Windows Server 2008 企業版

  • Windows Server 2008 企業版(無 Hyper-v)

  • Windows Server 2008 資料中心

  • Windows Server 2008 資料中心(沒有 Hyper-v)

  • Windows Server 2008 Web Edition

  • Windows Server 2008 標準伺服器 x64

  • Windows Server 2008 標準伺服器 x64 (無 Hyper-v)

  • Windows Server 2008 企業版 x64

  • Windows Server 2008 企業版 x64 (無 Hyper-v)

  • Windows Server 2008 資料中心 x64

  • Windows Server 2008 資料中心 x64 (無 Hyper-v)

  • Windows Server 2008 Web Edition x64

  • Windows Vista 家用基本版 SP1

  • Windows Vista 家用版 SP1

  • Windows Vista 商務版 SP1

  • Windows Vista 企業版 SP1

  • Windows Vista 旗艦版 SP1

  • Windows Vista Starter SP1

  • Windows Vista 家用基本版 x64 SP1

  • Windows Vista 家用版 Premium x64 SP1

  • Windows Vista 商務版 x64 SP1

  • Windows Vista Enterprise x64 SP1

  • Windows Vista 旗艦版 x64 SP1

  • Windows XP 專業版 SP3

  • Windows XP 家用版 SP3

  • Windows XP Media Center Edition 2005

  • Windows XP 媒體中心版 2004 SP3

  • Windows XP 平板電腦版 SP3

  • Windows XP Embedded SP3

  • Windows XP 專業版 x64 SP3

  • Windows 內嵌的服務點 SP3

  • Windows Server 2003,標準版 SP2

  • Windows Server 2003、企業版 SP2

  • Windows Server 2003、資料中心版 SP2

  • Windows Server 2003 R2,標準版

  • Windows Server 2003 R2、企業版

  • Windows Server 2003 R2、資料中心版本

  • Windows Server 2003 x64,標準版

  • Windows Server 2003 x64,企業版 x64 版本

  • Windows Server 2003 x64、資料中心版本

  • Windows Server 2003 R2 x64,標準版

  • Windows Server 2003 R2 x64、企業版

  • Windows Server 2003 R2 x64、資料中心版本

Windows 行動裝置
  • Windows CE 6。0

  • Windows CE 5。0

  • Windows CE 4。2

  • Windows Mobile 6。0

  • Windows Mobile 5。0

  • 適用于 Pocket 電腦的 Windows Mobile 2003

其他元件

本節將說明 SQL Server Compact 3.5 SP1 Windows 安裝程式(.msi)檔案。 您可以從 Microsoft 下載中心下載這些檔案中的部分檔案。 若要下載 SQL Server Compact 3.5 SP1 元件,請造訪下列 Microsoft 網站:

http://www.microsoft.com/sql/editions/compact/downloads.mspx 下列清單說明其他 SQL Server Compact 3.5 SP1 .msi 檔案。 注意: 在這個清單中,預留位置 語言 代表 SQL Server Compact 的產品語言。 例如,若為英文,預留位置代表 ENU,而針對日文,預留位置代表 JPN。

  • SQL Server Compact 3.5 SP1 設計工具(SSCEVSTools) 此檔案會將 SQL Server 精簡設計階段元件與 Visual Studio 2008 SP1 一起安裝。 設計階段元件是使用者介面、對話方塊和設計階段環境。 這些是用來撰寫 SQL Server Compact 的應用程式。 SQL Server Compact 設計階段元件會安裝在下列資料夾中:

    %ProgramFiles%\Microsoft Visual Studio 9 \ Common7\IDE 範例檔案會安裝在下列資料夾中:

    %ProgramFiles%\Microsoft SQL Server Compact Edition\v3.5\Samples 這些元件是與 Visual Studio 相關的,而且無法與 Visual Studio 單獨傳送。 此檔案也會安裝 SQL Server Compact 範例與 SQL Server Compact 頭檔案(適用于原生開發)。

  • SQL Server Compact 3.5 SP1 (SSCERuntime語言.msi) 此檔案會安裝適用于桌上型電腦的 SQL Server Compact 執行時間元件。 它會將這些元件安裝在下列中央資料夾中:

    %ProgramFiles%\Microsoft SQL Server Compact Edition\v3。5 在 Visual Studio 中開發應用程式,以及在桌上型電腦上執行 SQL Server Compact 應用程式時,需要這些元件。 您也可以從網路下載 SSCERuntime (msi)。 此檔案也會安裝適用于 ADO.NET 1.0 SP1 元件的 Microsoft 同步處理服務。 同步處理服務元件會安裝在下列資料夾中:

    %ProgramFiles%\Microsoft 同步處理 Services\ADO.NET\v1。0 如需詳細資訊,請參閱 適用于 ADO.NET 書籍 Online 的 Microsoft 同步處理服務。 此資源可在 Microsoft SQL Server 網站上使用。

  • 適用于裝置的 SQLServer COMPACT 3.5 SP1 (SSCEDeviceRuntime) 此檔案會在下列資料夾中安裝 SQL Server 精簡裝置的執行時間元件:

    %ProgramFiles%\Microsoft SQL Server Compact Edition\v3.5\Devices 在 Visual Studio 中開發 Windows Mobile 和 Windows CE 裝置的應用程式,以及在行動裝置上部署應用程式,都需要執行時間元件。 您也可以在 Microsoft SQL Server 網站上下載 SSCEDeviceRuntime (msi)。

  • SQL Server Compact 3.5 SP1 伺服器工具(SSCEServerTools語言.msi) 此檔案會在下列資料夾中安裝 SQL Server Compact Server 工具:

    %ProgramFiles%\Microsoft SQL Server Compact Edition\v3.5\sync\SQL 需要元件,才能將行動裝置上的 SQL Server Compact 資料庫連線至 SQL Server 2008 或 SQL Server 2005 資料庫。 您也可以在 Microsoft SQL Server 網站上下載 SSCEServerTools (msi)。

  • SQL Server Compact 3.5 SP1 查詢工具(SSCESqlWbTools語言.msi) 此檔案會在下列資料夾中安裝 SQL Server 精簡查詢-工具檔案:

    %ProgramFiles%\Microsoft SQL Server Compact Edition\v3.5\Tools 此外,範例檔案會安裝在下列資料夾中:

    %ProgramFiles%\Microsoft SQL Server Compact Edition\v3.5\Samples SSCESqlWbTools-.msi是 SQL Server COMPACT 3.5 SP1 版本的一部分。 此檔案會安裝為 SQL Server 2008 的一部分。 注意: 從 SQL Server Compact 3.5 SP1 開始,如果已安裝 SQL Server 2008,也可使用 [查詢工具] 元件。

此版本的已知問題

SQL Server Compact 3.5 SP1 中的已知問題如下:

  • 在 Visual Studio 和 SQL Server 說明中整合檔(一份)的相關資訊 SQL Server Compact 3.5 SP1 書籍 Online (活頁簿)及 ADO.NET 的 Microsoft 同步處理服務僅供從 Microsoft 下載中心下載網頁。 它們不包含在 Visual Studio 2008 SP1 或 SQL Server 2008 中。 若要從 Visual Studio 2008 SP1 或 SQL Server 2008 的檔中存取這些集合,並從 Visual studio 2008 SP1 或 SQL Server 2008 存取 F1 說明,請將這些集合新增到 Visual Studio 和 SQL Server 綜合說明集合。 若要這樣做,請下載 SQL Server Compact 3.5 SP1 書籍 Online 和 Microsoft 同步處理服務以進行 ADO.NET。 然後,關閉 Visual Studio/SQL Server 結合式說明集合(Visual Studio 2008 和 SQL Server 2008)的所有實例。 當您重新開啟 Visual Studio 和 SQL Server 結合式說明集合時,SQL Server Compact 3.5 SP1 書籍線上,以及適用于 ADO.NET 書籍 Online 的 Microsoft 同步處理服務將可在應用程式的 [目錄]、[索引]、[搜尋] 和 [F1 說明] 中取得。

  • Windows Mobile 支援 SQL Server Compact 3.5 SP1 (適用于裝置安裝程式檔案)無法與 Visual Studio 2008 SP1 一起安裝。 檔案只能從 Microsoft 下載中心以網頁下載的形式提供。

  • 從預發行版本本升級 升級至 SQL server Compact 3.5 或 sql server Compact 3.5 SP1 (來自 SQL Server Compact 3.5 社區技術預覽版(CTP)版本或 SQL Server compact 3.5 測試版版本不支援。 從 SQL Server Compact 3.5 或 SQL Server Compact 3.5 SP1 Beta 版升級至 SQL Server Compact 3.5 SP1。 從 CTP 和 Beta 版本的 SQL Server Compact 3.5 升級到發行版本本不受支援。 卸載 Visual Studio 2008 的 CTP 或 Beta 版本不會卸載 SQL Server Compact 3.5。 您必須先移除 SQL Server Compact 3.5 的 CTP 或 Beta 安裝,才能安裝 Visual Studio 2008 的發行版本本。 若要這樣做,請執行下列其中一項動作:

    • 在 Windows Vista 中,按一下 [ 開始],按一下 [ 控制台],然後按兩下 [ 程式和功能]。 卸載下列應用程式的所有 CTP 與測試版安裝:

      • SQL Server Compact 3。5

      • 適用于裝置的 SQL Server Compact 3。5

      • SQL Server Compact 3.5 設計工具

    • 在 Windows XP 或 Windows Server 2003 中,按一下 [ 開始],按一下 [ 控制台],然後按兩下 [ 新增或移除程式]。 卸載下列應用程式的所有 CTP 與測試版安裝:

      • SQL Server Compact 3。5

      • 適用于裝置的 SQL Server Compact 3。5

      • SQL Server Compact 3.5 設計工具

  • 卸載 Visual Studio 2008 SP1 時,不會卸載 SQL Server Compact 3.5 SP1 卸載 Visual Studio 2008 SP1 並不會自動卸載 SQL Server Compact 3.5 SP1 設計工具與 SQL Server Compact 3.5 SP1。 如果您想要還原到 Visual Studio 2008 安裝,您必須先手動卸載 SQL Server Compact 3.5 SP1 設計工具,以及 SQL Server Compact 3.5 SP1。 接著,您必須使用 Visual Studio 2008 安裝媒體來安裝 SQL Server Compact 3.5 設計工具與 SQL Server Compact 3.5。 SQL Server Compact 3.5 與 SQL Server Compact 3.5 設計工具的 Windows Installer 套件位於 Visual Studio 2008 安裝媒體上的下列資料夾中:

    WCU\SSCE SQL Server Compact 3.5 套件的檔案名為 SSCERuntime-Language。 SQL Server Compact 3.5 設計工具套件的檔案名為 SSCEVSTools-Language。 注意: 預留位置 語言 代表 SQL Server Compact 的產品語言。

  • SQL Server Management Studio 2008 整合 如果您在安裝 SQL Server 2008 時選取 [ 修復 ] 選項,則 SQL server COMPACT 3.5 SP1 查詢工具與 Sql server COMPACT 3.5 sp1 不會自動重新安裝。 若要解決此問題,請從 SQL Server 安裝媒體上的下列資料夾中安裝 SQL Server Compact .msi 檔案:

    Servers\Setup SQL Server Compact 3.5 SP1 套件的檔案名為 SSCERuntime-Language。 SQL Server Compact 3.5 SP1 查詢工具套件的檔案名為 SSCESqlWbTools (英文)。 注意: 預留位置 語言 代表產品語言。 重要 如果您使用 SQL Server 2008 Management Studio 時未安裝 SQL Server Compact 3.5 SP1,您會收到下列錯誤訊息:

    無法載入 Microsoft SQL Server Compact。 從 SQL Server 安裝媒體上的資料夾-Servers\Setup 安裝 Microsoft SQL Server Compact MSIs。 如需詳細資訊,請參閱知識庫文章952218。

    若要解決此問題,請從「Servers\Setup」資料夾中的 SQL Server 2008 安裝媒體安裝 Microsoft SQL Server Compact 3.5 SP1 查詢工具與 Microsoft SQL Server Compact 3.5 SP1。 如需此問題及其解決方式的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:

    952218 當您嘗試從 sql server Management Studio 2008 中的 sql server Management Studio 連線至 SQL server Compact 3.5 Service Pack 1 時,出現錯誤訊息:「無法載入 Microsoft SQL Server Compact」  

  • SQL Server Compact 3.5 SP1 (x86) Server Tools. 當 iis 安裝在 Vista (x64)或 Windows 2008 伺服器上時,msi 檔案無法辨識 iis 如需此問題的詳細資訊及如何解決,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:

    955966 SQL Server Compact 3.5 Service Pack 1 當您在64位的 Windows Server 2008 電腦或64在 Windows Vista 的 Microsoft 電腦上執行 IIS 7.0 時,在 WOW 模式中不會安裝伺服器工具  

  • 裝置的 Visual Studio 向後相容性 在您安裝 SQL Server Compact 3.5 SP1 裝置執行時間之後,任何參照 SqlServerCe 元件的「智慧裝置」專案,以及使用 Visual Studio 2008 SP1 或 Visual Studio 2008 所建立的專案,都無法來回開啟。 發生這個問題的原因是,在 SQL Server Compact 3.5 SP1 (3.5.1.0)和 SQL Server Compact 3.5 (3.5.0.0)中,SqlServerCe 元件版本。 可能的案例及其解決方式如下所示:

    • 您可以使用 Visual Studio 2008 建立「智慧設備」專案,並確認專案會參照 SqlServerCe 程式集。 接著,您會安裝 Visual Studio 2008 SP1 和 SQL Server Compact 3.5 SP1 裝置執行時間。 當您開啟並建立專案時,您會收到下列錯誤訊息:

      這個操作需要 SQL Server Compact 3.5 的參考。 專案具有對其他版本的參考。 更新參照,然後再試一次。

      發生這個問題的原因是,在專案中參照的 SqlServerCe 版本與電腦上存在的 SqlServerCe .dll 檔案不同的版本。 如果要解決這個問題,請依照下列步驟執行:

      1. 在 [ 視圖 ] 功能表上,按一下 [ 解決方案資源管理器]。

      2. 按一下 [ 參考資料]。

      3. 按一下以選取 [ SqlServerCe ] 核取方塊,然後將 [屬性] 對話方塊中的 [特定版本] 屬性設定為 [ False ]。

      注意: 如果您使用 Visual Studio 2008 與 Visual Studio 2008 SP1 來開啟專案,則此解析度不需要您更新 SqlServerCe 檔案的元件版本。

    • 您安裝 Visual Studio 2008 和 SQL Server Compact 3.5 裝置執行時間。 接著,您會開啟先前在執行 Visual Studio 2008 SP1 與 SQL Server Compact 3.5 SP1 裝置執行時間的電腦上建立的「智慧裝置」專案。 當您建立專案時,應用程式會順利建立。 不過,當您嘗試調試應用程式時,會收到下列錯誤訊息:

      找不到 PInvoke DLL "sqlceme35"

      之所以會發生此問題,是因為專案有 SqlServerCe 版本3.5.1.0 的本地系統複本。 但相依的原生檔案不會出現在電腦上。 這些檔案包括 Sqlceme35。 如果要解決這個問題,請依照下列步驟執行:

      1. 在 [ 視圖 ] 功能表上,按一下 [ 解決方案資源管理器]。

      2. 按一下 [ 參考資料]。

      3. 按一下以選取 [ SqlServerCe ] 核取方塊,然後在 [屬性] 對話方塊中將 [複製本機] 屬性設定為False

      4. 從專案的本機資料夾移除 SqlServerCe 元件。

      5. 按一下 [ 參考資料]。

      6. 以滑鼠右鍵按一下 [ SqlServerCe],然後按一下 [ 移除]。

      7. 按一下 [ 參考資料]。

      8. 以滑鼠右鍵按一下 [ 參考 區域],然後按一下 [ 新增參照]。

      9. 在 [ 新增參照 ] 對話方塊中,按一下 [ .net ] 索引標籤。

      10. 在 [ 元件名稱 ] 清單中,按一下以選取 [ SqlServerCe ] 核取方塊,然後按一下 [確定]

  • 預設的限制是依「原樣」複製 當包含 Geometry 類型之資料行的專案複製到執行 SQL Server Compact 的訂閱者時,預設的限制會依「原樣」複製。 若要解決此問題,請執行下列其中一項操作:

    • 請勿複製預設限制式。 相反地,請先停用文章的架構選項,然後再將文章複製到訂閱者。

    • 在您發佈之前,請先從表格中移除預設限制式。

    • 將預設值指定為文字,而不是幾何函數。

  • 不會使用 "SqlCeConnection" 類別的 [加密] 屬性 SQL Server Compact 3.5 SP1 不使用SqlCeConnection類別的 [加密] 屬性。 不應使用SqlCeConnection類別的 [加密] 屬性。 注意: 在未來版本中,將會棄用 [ 加密 ] 屬性。 這個屬性會保留在 SQL Server Compact 3.5 SP1 中,僅供向後相容。 使用SqlCeConnection類別的 [加密模式]屬性來加密 SQL Server Compact 3.5 SP1 資料庫檔案。 下列範例示範如何建立新的加密 SQL Server Compact 3.5 SP1 資料庫。 C#

    SqlCeEngine engine = new SqlCeEngine("Data Source=Northwind.sdf;encryption mode=platform default;Password=<enterStrongPasswordHere>;");
    engine.CreateDatabase();
    

    Visual Basic

    Dim engine As SqlCeEngine = New SqlCeEngine("Data Source=Northwind.sdf;encryption mode=platform default;Password=<enterStrongPasswordHere>;")
    engine.CreateDatabase()
    
  • 升級至 Visual Studio 2008 之後,必須重新發佈 ClickOnce 應用程式 當您從 Visual Studio 2005 升級到 Visual Studio 2008 時,系統不會升級加密的 SQL Server Compact 資料庫,且必須重新發佈 ClickOnce 應用程式。 舊版 SQL Server Compact 所建立的 Database (* .sdf)檔案不相容 SQL Server Compact 3.5 SP1。 在 Visual studio 2005 專案升級至 Visual Studio 2008 時,只會升級舊版 SQL Server Compact 的未加密資料庫檔案。 必須手動升級加密的資料庫檔案。 如果 Visual Studio 2005 專案使用 ClickOnce 發佈應用程式,則應該在 Visual Studio 2008 中升級專案之後,重新發佈應用程式。 若要手動升級加密的資料庫檔案,請遵循下列步驟:

    1. 按一下 [ 資料]。

    2. 按一下 [ 新增資料來源]。

    3. 按一下 [ 新增連線]。

    如果您開啟較舊版本的資料庫檔案,您會收到一則訊息。 如果您在郵件中按一下 [確定] ,就會顯示 [ 升級至 SQL Server Compact 3.5 資料庫 ] 對話方塊。 或者,您可以使用 SqlCeEngine. 升級 API 以進行程式設計案例。 例如,您可以使用類似下列程式碼範例的程式碼。 C#

    SqlCeEngine engine = new SqlCeEngine("Data Source=Northwind.sdf;Password=<enterStrongPasswordHere>;");
    engine.Upgrade ("Data Source=Northwind.sdf;encryption mode=platform default;Password=<enterStrongPasswordHere>;");
    

    Visual Basic

    Dim engine As SqlCeEngine = New SqlCeEngine("Data Source=Northwind.sdf;Password=<enterStrongPasswordHere>;")
    engine.Upgrade("Data Source=Northwind.sdf;encryption mode=platform default;Password=<enterStrongPasswordHere>;")
    

    如果您的專案使用 ClickOnce 發佈應用程式,則應該在 Visual Studio 2008 中升級應用程式後,重新發佈應用程式。 當您在 Visual Studio 2008 中重新發佈 ClickOnce 應用程式時,您可能會看到下列警告訊息:

    無法找到引導的 SQL Server 2005 精簡版必備元件 您可以放心地忽略警告訊息。

  • SQL Server Compact 3.5 SP1 SqlDbType 和 DbType 等參數的資料類型應該明確設定 如果沒有明確設定參數的資料類型(例如 SqlDbType 和 DbType ),資料庫引擎可能會嘗試猜測該參數最適合的資料類型。 這個猜測可能不正確,特別是對於不固定長度(包括大型物件)的字串和二進位資料類型(例如, Nvarchar、 Ntext、 Varbinary和 image)而言。 在這些情況下,可能會拋出例外狀況錯誤訊息。 若要解決此問題,我們強烈建議您針對字串和二進位資料類型(不是固定長度)指定參數的資料類型。 例如,您可以使用類似下列程式碼範例的程式碼。 C#

    SqlCeEngine engine = new SqlCeEngine(connString);
    engine.CreateDatabase();
    engine.Dispose();
    
    SqlCeConnection conn = new SqlCeConnection(connString);
    conn.Open();
    
    SqlCeCommand cmd = conn.CreateCommand();
    cmd.CommandText = "CREATE TABLE BlobTable(nameCol nvarchar(128), blobCol ntext);";
    cmd.ExecuteNonQuery();
    
    cmd.CommandText = "INSERT INTO BlobTable(nameCol, blobCol) VALUES (@nameParam, @blobParam);";
    SqlCeParameter paramName = cmd.Parameters.Add("nameParam", SqlDbType.NVarChar, 128);
    SqlCeParameter paramBlob = cmd.Parameters.Add("blobParam", SqlDbType.NText);
    paramName.Value = "Name1";
    paramBlob.Value = "Name1".PadLeft(4001);
    
    cmd.ExecuteNonQuery();
    

    Visual Basic

    Dim engine As SqlCeEngine = New SqlCeEngine(connString)
    engine.CreateDatabase()
    engine.Dispose()
    
    Dim conn As SqlCeConnection = New SqlCeConnection(connString)
    conn.Open()
    
    Dim cmd As SqlCeCommand = conn.CreateCommand()
    cmd.CommandText = "CREATE TABLE BlobTable(nameCol nvarchar(128), blobCol ntext);"
    cmd.ExecuteNonQuery() 
    
    cmd.CommandText = "INSERT INTO BlobTable(nameCol, blobCol) VALUES (@nameParam, @blobParam);"
    Dim paramName As SqlCeParameter
    Dim paramBlob As SqlCeParameter
    paramName = cmd.Parameters.Add("nameParam", SqlDbType.NVarChar, 128)
    paramBlob = cmd.Parameters.Add("blobParam", SqlDbType.NText)
    paramName.Value = "Name1"
    paramBlob.Value = "Name1".PadLeft(4001)
    
    cmd.ExecuteNonQuery()
    
  • 在某些情況下,資料庫檔案格式相容性受到限制 您可以在 SQL Server compact 3.5 和 SQL Server Compact 3.5 SP1 中開啟 SQL Server Compact 3.5 SP1 資料庫(.sdf)檔案。 不過,在某些情況下,資料庫檔案格式相容性可能會受到限制。 例如,在下列情況下,資料庫檔案格式相容性可能會受到限制:

    • 在 SQL server compact 3.5 SP1 中建立的區分大小寫的資料庫無法在 SQL Server Compact 3.5 中開啟或識別。 請注意,從 SQL Server Compact 3.5 SP1 開始推出區分大小寫的排序規則。

    • SQL Server Compact 3.5 執行時間與 SQL Server Compact 3.5 SP1 執行時間無法同時開啟相同的資料庫檔案。

  • 包含左外部聯結類型且常數作為左運算元的查詢,不會傳回正確的結果 當您執行的查詢包含左外部聯結類型,而常數作為左運算元時,不會傳回正確的結果。 之所以發生這個問題,是因為 SQL Server Compact 無法正確評估此類查詢。 以下是這類查詢的範例:

    SELECT * FROM table1 LEFT OUTER JOIN table2 ON 1 = table1.column1

    下列 LINQ to Entities 查詢也會包含一個常數值,作為 GroupBy 方法中的鍵選取器函數。 此查詢會轉換成左向外部聯結,並在內部使用常數作為左運算元,並傳回不正確的值。 C#

    using (NorthwindEntities nwEntities = new NorthwindEntities())
    {
       var customers = nwEntities.Customers
                       .GroupBy( c => 1, c => c.Customer_ID)
                       .Select( c => c);
    }
    
  • ADO.NET 實體架構的 SQL Server Compact 3.5 SP1 執行時間問題

    • 此版本不支援在內部轉換成標量子查詢的相關子查詢。 針對這類子查詢,您會收到下列錯誤訊息:

      執行命令定義時發生錯誤。 如需詳細資訊,請參閱內部例外狀況。」 內部例外狀況包含下列訊息: [分析查詢時發生錯誤]。 [..,Error 中的標記 = AS]

      之所以會出現這個問題,是因為實體架構會將輸入查詢轉譯為含 [交叉套用] 或 [外部套用] 連線類型的查詢。 如果連接條件的右側傳回一個標量值,則會將連接轉換成標量子查詢。 SQL Server Compact 的實體框架提供者必須將該標量子查詢轉換成對等查詢,且具有 SQL Server Compact 支援的外部 APPLY 連線類型。 不過,在這個版本中,此轉換無法正確完成。 例如,下列查詢會在此發行版本本中引發錯誤訊息: C #

      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());
          }
      }
      
      • 如果主要查詢和子查詢都包含 DISTINCT 關鍵字,且使用外部聯結子句指示連接條件,則會在執行實體框架查詢時,發生存取侵犯例外狀況。 例如,下列查詢會產生存取違規:

        SELECT DISTINCT [o].[CustomerID]
        FROM (SELECT DISTINCT * FROM [Orders]) AS [o]
        LEFT OUTER JOIN [Customers] AS [c] ON [o].[CustomerID] = [c].[CustomerID]
        

已修正的問題清單

此 service pack 可修正下列問題:

  • 923979 當您嘗試在 SQL Server 2005 行動版資料庫中插入列或執行其他資料庫作業時,出現錯誤訊息:「可能有錯誤的頁面資料庫損毀」

  • 933463 使用 SQL Server 2005 行動版本的 Managed 應用程式可能會在 SQL Mobile Dll 的位置變更時意外停止

  • 934386 在執行 Windows CE .NET 4.2 的 ARMV4i 裝置上,您無法使用 SQL Server 2005 精簡版

  • 935769 從 SQL Server 2000 Windows CE 版2.0 升級至 SQL Server 2005 行動版版本時,出現錯誤訊息:「資料庫檔案大於設定的最大資料庫大小」

  • 936487 使用 SQL Server 2005 精簡版3.1 的 Managed 應用程式可能會在 Windows Mobile 5.0 ARMV4i 相容的裝置上意外停止(如果 SQL Server 精簡版 Dll 變更的位置)

  • 938786 .Net compact Framework 2.0 的裝置應用程式,它會呼叫 SqlCeEngine。針對 SQL Server 2005 精簡版資料庫的驗證方法停止回應

  • 947002 當您嘗試在 SQL Server 2005 精簡版或 SQL Server Compact 3.5 中刪除資料表中的資料列時,出現錯誤訊息:「主要錯誤0x80004005,次要錯誤0。 嘗試除數為零 "

  • 950440 當應用程式在 SQL Server 2005 精簡版的謂詞中執行大型查詢時,應用程式似乎會停止回應

  • 951932 當您在 sql server 2005 精簡版中建立訂閱至 SQL Server 2000 上的合併發佈時,出現錯誤訊息:「資料表名稱無效。 [權杖行號(如果已知) = 1,權杖行偏移(如果已知) = 22,資料表名稱 = <TableName>]」

  • 953259 當您在 SQL Server 2005 精簡版的資料庫中使用 Charindex 函數時,當您執行的 SQL 語句所使用的錯誤訊息:「SQL Server 精簡版無法辨識此函數」

此 service pack 會修正先前未在 Microsoft 知識庫文章中記錄的下列問題:SQL SERVER Compact 3.5 SP1

  • 在從 SQL Server 2005 將資料合併複製到 SQL Server Compact 3.5 期間,可能會建立不正確的 Transact-sql 語句。 此外,資料變更不會套用至 SQL Server Compact。 例如,當您建立不正確的 Transact-sql 語句(例如下列)時,可能會發生這個問題:

    not null default n e w i d ( )

    您可能會想要建立如下的 Transact-sql 語句:

    not null default newid()
  • 與 SQL Server 2005 精簡版相比,您在 SQL Server Compact 3.5 中遇到較慢的查詢效能。 這個問題是由不同的查詢方案所造成。 如果您執行下列程式碼,系統會在 SQL Server Compact 3.5 中產生不正確的查詢方案,並使用 [資料表掃描],而不是 [索引掃描]:

    cmd.CommandText = @"select * from  Customers where Customers.Customer_ID = @v0";cmd.Parameters.Add("@v0", SqlDbType.NVarChar);rdr = cmd.ExecuteReader();
  • 不論是否已呼叫 ts,都將提交 TransactionScope 參數。 例如,如果使用 LINQ to SQL DataCoNtext,就會發生此問題,如下列在 SQL Server Compact 3.5 中使用的範例程式碼:

    using System;using System.Data.Linq;using System.Transactions;namespace bug{    class Program    {        static void Main(string[] args)        {            DataContext ctx = new DataContext("Test.sdf");            using (TransactionScope ts = new TransactionScope())            {                ctx.ExecuteCommand("INSERT INTO x (y) VALUES (2)");            }        }    }
  • 當您使用 SQL Server Compact 搭配 ADO.Net 實體架構時,大於8000位元組的值無法插入包含二進位大型物件欄的 SQL Server Compact 表格中。

  • 如果索引已過時,當以唯讀模式開啟與 SQL Server Compact 3.5 的連線時,更新統計資料會失敗。

  • 您會在 GetColumnRowSet 程式中收到可滾動結果集的存取侵犯錯誤訊息。 此外, OpenSharedMemory處理常式不會在全域命名空間中的共用記憶體建立失敗時重設pError物件。

  • 在連接處理常式後釋放Command物件可能會引發異常錯誤訊息。 如果執行下列程式碼,可能會發生這個問題:

    SqlCeConnection cn;SqlCeCommand cmd;... cn.Dispose();cmd.Dispose(); 
  • 當 Select 語句不傳回由 Group By 參數或 Order by 參數排序的所有資料行時,會引發存取違規錯誤訊息。 例如,下列 Select 語句可能會發生這個問題:

    SELECT        [Company Name], [Contact Name]FROM            CustomersGROUP BY [Customer ID], [Company Name], [Contact Name]ORDER BY [Customer ID], [Company Name], [Contact Name]
  • 如果資料表中只有一個元素,且 WHERE 子句中使用 AND 條件,則串聯刪除無法正常運作。 使用 "NOT" 和 "OR" 可以正常運作。 例如,下列查詢無法正常運作:

    Select from table where (a=x AND b=y)
  • 選取清單中的 null 值可能會間歇地在 ExecuteReader 程式中產生原生例外錯誤訊息。 SqlCeException類別不會捕獲例外狀況,您會收到下列原生例外錯誤訊息:

    SqlMobileCrash 中發生本機例外狀況。 選取 [結束],然後重新開機此程式,或選取 [詳細資料] 以取得詳細資訊。例外狀況代碼: 0xc0000005Exception Address:0x00d1aa68Reading:0x0027f0000

  • 當使用SET IDENTITY_INSERT命令時, Table Name參數會被視為區分大小寫。 發生這個問題的原因是中繼資料應該總是不區分大小寫。

  • 如果使用 IDbCommand 物件,則 [插入至類型的資料行] 會失敗。 例如,下列程式碼會發生這個問題:

    try            {                string ConnectionString = "Data Source='Northwind.sdf'";                IDbConnection conn = new SqlCeConnection(ConnectionString);                IDbCommand cmd = conn.CreateCommand();                cmd.CommandText = "insert into \"newtable\"(\"t1\")values(@p0)";                conn.Open();                IDbDataParameter p;                p = cmd.CreateParameter();                p.Value = 7.6M;                p.ParameterName = "@p0";                cmd.Parameters.Add(p);                IDbTransaction t = cmd.Connection.BeginTransaction();                cmd.Transaction = t;                cmd.Prepare();                cmd.ExecuteNonQuery();                p.Value = 10M;                cmd.ExecuteNonQuery(); // Exception is thrown here                t.Commit();            }            catch (Exception ex)            {             }
  • SqlCeResultSet GetEnumerator命令會引發 StackOverflowException 錯誤訊息,而SqlCeDataReader. GetEnumerator命令會在執行下列程式碼時引發 NotSupportedException 錯誤訊息:

    SqlCeConnection conn = new SqlCeConnection(@"Data Source=Northwind.sdf");conn.Open();SqlCeCommand cmd = conn.CreateCommand();cmd.CommandText = "Select * from categories";SqlCeResultSet res = cmd.ExecuteResultSet(ResultSetOptions.Scrollable | ResultSetOptions.Updatable | ResultSetOptions.Sensitive);IEnumerator e= res.GetEnumerator(); // Exception is thrown here.conn.Close();
  • 當 RAPI 呼叫類比 System.object (ASP.NET)案例時,SQL Server Compact 可能會引發 null 參照例外狀況的錯誤訊息。

SQL Server Compact 3。5

  • 如果已執行重建索引的維護方案,則合併初始化無法針對主鍵索引限制執行 Alter Table 語句。 合併初始化失敗,而且您收到下列錯誤訊息:

    資料表名稱無效。 [權杖行號(如果已知) = 1,權杖行偏移(如果已知) = 21,資料表名稱 = 類別]HRESULT 0x80040E14 (26100)。SQL 語句無法執行。 [SQL 語句 = ALTER TABLE [dbo]。分類新增限制式 [PK_Categories] 主鍵群集([類別 Id])與 PAD_INDEX,FILLFACTOR = 85] HRESULT 0x80040E14 (28560)

  • 如果 Windows Mobile 2003 袖珍電腦執行多個執行緒與程式來存取同一個資料庫,應用程式可能會以隨機錯誤訊息結束。

  • 在 Microsoft Visual Studio 2008 中,無法建立資料庫連線至 SQL Server Compact 資料庫。 如果資料庫大於256百萬位元組(MB),就會發生此問題。

  • 下列 SQL Server Compact 原生二進位檔案現在已由 Microsoft 登入。全域 .dll 檔案

    • Sqlcese35.dll

    • Sqlcecompact35.dll

    • Sqlceqp35.dll

    • Sqlceoledb35.dll

    • Sqlceme35.dll

    • Sqlceca35.dll

    • Sqlcesa35.dll

    • Sqlcerp35.dll

    語言特定的 .dll 檔案

    • Sqlceer35br.dll

    • Sqlceer35cn.dll

    • Sqlceer35cs.dll

    • Sqlceer35da.dll

    • Sqlceer35de.dll

    • Sqlceer35el.dll

    • Sqlceer35en.dll

    • Sqlceer35es.dll

    • Sqlceer35fi.dll

    • Sqlceer35fr.dll

    • Sqlceer35it.dll

    • Sqlceer35ja.dll

    • Sqlceer35ko.dll

    • Sqlceer35nl.dll

    • Sqlceer35no.dll

    • Sqlceer35pl.dll

    • Sqlceer35ps.dll

    • Sqlceer35pt.dll

    • Sqlceer35ru.dll

    • Sqlceer35sv.dll

    • Sqlceer35tw.dll

  • 當查詢有多個 OR 謂詞時,會引發存取違規異常錯誤訊息,如下列程式碼範例所示:

    create table t1 (c1 int);create index t1_idx on t1(c1);insert into t1 values (1);insert into t1 values (2);insert into t1 values (3);create table t2 (col1 int, col2 int);insert into t2 values (2,3);insert into t2 values (1,3);insert into t2 values (3,3);select * from t1,t2 where c1 = col1 or c1 = col2 or c1 = 1;
  • 您執行的是使用 FAT32 檔案系統的 Windows XP 電腦。 如果 SQL Server 精簡資料庫是由 Windows 服務和應用程式同時存取,應用程式就會當機。

  • SqlCeEngine Compact方法會在已指定範圍中的最大分派值已刪除時,將 Autoinc_Next 值錯誤地設定。如果已刪除最大的指定值,Autoinc_Next 值將會設定為大於範圍內指定專案所使用的目前最大值1。

  • 在 TableDirectIndexSearch 語句和 Select 語句中存取包含特殊字元的記錄時,可能會發生意外的結果。

  • Microsoft Visual Studio 2005 [查詢設計工具] 會在日期函數中加入方括弧。

  • 在 SQL Server 與 SQL Server Compact 之間的資料合併複製期間,您會收到下列錯誤訊息:

    鎖管理員空間不足,無法進行其他鎖定。 這可能是由於大型事務、大型排序作業,或 SQL Server 精簡版建立臨時資料表的操作所造成。 您無法增加鎖定空間。

  • 當字串與類型字串的參數連接時,會引發 FormatException 錯誤訊息。 例如,當您執行下列程式碼時,就會發生此問題:

    SqlCeConnection con = new SqlCeConnection("Test.sdf"); SqlCeCommand cmd = con.CreateCommand();cmd.CommandText = "select firstname + ' ' + lastname from person";bool i = cmd.ExecuteReader().Read();cmd.CommandText = "select firstname + @p0 + lastname from person";cmd.Parameters.Add("@p0", " ");i = cmd.ExecuteReader().Read();
  • 不會啟用重複的參數名稱。

  • 如果您在使用包含 Order By 子句的 Select 語句時,出現「刪除」、「讀取」、「ReadPrevious」順序,則會出現例外錯誤訊息。

  • 使用 ORDER BY 子句時,不允許選取 [DISTINCT * 語句]。

  • 如果指定了限制式名稱,則無法將欄新增到包含非 Null 值及預設值的現有填充資料表中。 例如,當您執行下列程式碼時,就會發生此問題:

    ALTER TABLE Categories ADD COLUMN bitcol1 bit NOT NULL CONSTRAINT MyConstraint DEFAULT (1);
  • 當您執行下列查詢時,會選取不正確的索引:

    SELECT store_uid, stock_price, stock_class, stock_number, ticket_number, pocket, max(last_reorder_date) last_reorder_date, reorder_point, last_order_qty, sys_line_flag, stock_status, max(last_ship_date) last_ship_date, max(last_scan_date) last_scan_date, max(back_order_status) back_order_status, max(unit_last_scan_date) unit_last_scan_date, max(revision_target) revision_target FROM tbl_master_chart WHERE store_uid = 22359 and stock_price = '0399' and stock_class = 'EGB' and stock_number = '4759' GROUP BY store_uid, stock_price, stock_class, stock_number, ticket_number, pocket, reorder_point, last_order_qty, sys_line_flag, stock_status ORDER BY sys_line_flag DESC, ticket_number
  • 如果您使用 ReadAbsolute (負整數) 程式來檢索列的 getString 值,您會收到下列例外狀況錯誤訊息:

    列/欄不存在任何資料

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×