可以从 Microsoft 下载中心下载本文件的最新版本。

SQL Server 文档小组欢迎您提交文档反馈。我们会关注和调查所有文档问题,但此处不回答技术支持问题。若要获得与文档无关的技术问题的帮助,请参阅获取 SQL Server Compact 帮助。请尽可能用英文向我们提交反馈。

目录

1.0 简介

Microsoft® SQL Server™ Compact 3.5 Service Pack 2 是一个只占用少量内存的进程内数据库引擎,开发人员可利用它来生成适用于 Windows 台式机和移动设备的可靠应用程序。

1.1 获取 SQL Server Compact 3.5 SP2

SQL Server Compact 3.5 SP2 将随 SQL Server 2008 R2 和 Visual Studio 2010 一起安装,也可以从以下 Web 下载获得:

·         SQL Server Compact 3.5 SP2(32 位和 64 位版本)。

·         Visual Studio 2010。 请注意,Visual Studio 2010 也安装 SQL Server Compact 3.5 SP2 的 64 位版本。

·         SQL Server 2008 R2。请注意,SQL Server 2008 R2 仅安装 SQL Server Compact 3.5 SP2 的 32 位版本,不安装 64 位版本。可从 SQL Server Compact 3.5 SP2 下载获得 64 位版本。

·         SQL Server Compact 3.5 SP2 for Devices。请注意,包含设备运行时 .cab 文件的 SQL Server Compact 3.5 SP2 for Devices 的 Windows Installer 文件 (MSI) 不随 Visual Studio 2010 一起安装。

·         SQL Server Compact 3.5 SP2 Server

1.2 SQL Server Compact 3.5 SP2 联机丛书

SQL Server Compact 3.5 SP2 联机丛书提供有关在 Windows 台式机和 Windows Mobile 设备上开发、管理和部署 SQL Server Compact 3.5 SP2 的详细信息。SQL Server Compact 3.5 SP2 联机丛书不随 Visual Studio 2010 文档或 SQL Server 2008 R2 联机丛书一起安装,只能从 Microsoft 下载中心下载获得。

安装 SQL Server Compact 联机丛书后,它将以独立帮助集的形式出现在“开始”菜单中。若要从 SQL Server 2008 R2 文档中访问此帮助集以及从 SQL Server 2008 R2 中访问 F1 帮助,您必须将该帮助集添加到 SQL Server 组合帮助集中。有关添加帮助集的说明,请参阅本文档后面的“已知问题”。

1.3 Microsoft Synchronization Services for ADO.NET 1.0 SP1

使用 Microsoft Synchronization Services for ADO.NET,可以通过两层、n 层和基于服务的体系结构同步来自不同数据源的数据。

若要了解有关此技术的详细信息,请参阅产品文档。Synchronization Services 组件可从 SQL Server Compact 3.5 SP2 下载获得。

[返回页首]

2.0 SQL Server Compact 3.5 SP2 支持的操作系统和平台

SQL Server Compact 3.5 SP2 支持下列操作系统。

Windows 台式机

·         Microsoft Windows XP Professional SP3

·         Microsoft Windows XP Home Edition SP3

·         Microsoft Windows XP Media Center Edition 2004 SP3

·         Microsoft Windows XP Media Center Edition 2005

·         Microsoft Windows XP Tablet PC Edition SP3

·         Microsoft Windows XP Embedded SP3

·         Microsoft Windows XP Professional x64 SP3

·         Windows Embedded for Point of Service SP3

·         Microsoft Windows Server 2003 Standard Edition SP2

·         Microsoft Windows Server 2003 Enterprise Edition SP2

·         Microsoft Windows Server 2003 Datacenter Edition SP2

·         Microsoft Windows Server 2003 R2 Standard Edition

·         Microsoft Windows Server 2003 R2 Enterprise Edition

·         Microsoft Windows Server 2003 R2 Datacenter Edition

·         Microsoft Windows Server 2003 x64 Standard Edition

·         Microsoft Windows Server 2003 x64 Enterprise x64 Edition

·         Microsoft Windows Server 2003 x64 Datacenter Edition

·         Microsoft Windows Server 2003 R2 x64 Standard Edition

·         Microsoft Windows Server 2003 R2 x64 Enterprise Edition

·         Microsoft Windows Server 2003 R2 x64 Datacenter Edition

·         Windows Vista Home Basic SP2

·         Windows Vista Home Premium SP2

·         Windows Vista Business SP2

·         Windows Vista Enterprise SP2

·         Windows Vista Ultimate SP2

·         Windows Vista Starter Edition SP2

·         Windows Vista Home Basic x64 SP2

·         Windows Vista Home Premium x64 SP2

·         Windows Vista Business x64 SP2

·         Windows Vista Enterprise x64 SP2

·         Windows Vista Ultimate x64 SP2

·         Windows Server 2008 Standard Server SP2

·         Windows Server 2008 Standard Server SP2(不带 Hyper-V)

·         Windows Server 2008 Enterprise SP2

·         Windows Server 2008 Enterprise SP2(不带 Hyper-V)

·         Windows Server 2008 Data Center SP2

·         Windows Server 2008 Data Center SP2(不带 Hyper-V)

·         Windows Server 2008 Web Edition SP2

·         Windows Server 2008 Standard Server SP2 x64

·         Windows Server 2008 Standard Server SP2 x64(不带 Hyper-V)

·         Windows Server 2008 Enterprise SP2 x64

·         Windows Server 2008 Enterprise SP2 x64(不带 Hyper-V)

·         Windows Server 2008 Data Center SP2 x64

·         Windows Server 2008 Data Center SP2 x64(不带 Hyper-V)

·         Windows Server 2008 Web Edition SP2 x64

·         Windows 7 Starter

·         Windows 7 Starter x64

·         Windows 7 Home Premium

·         Windows 7 Home Premium x64

·         Windows 7 Professional

·         Windows 7 Professional x64

·         Windows 7 Ultimate

·         Windows 7 Ultimate x64

·         Windows Server 2008 R2 Foundation x64

·         Windows Server 2008 R2 Standard x64

·         Windows Server 2008 R2 Enterprise x64

·         Windows Server 2008 R2 Datacenter x64

·         Windows Web Server 2008 R2 x64

 

Windows 移动设备

·         Windows CE 4.2

·         Windows CE 5.0

·         Windows CE 6.0

·         Windows Mobile 2003 for Pocket PC

·         Windows Mobile 5.0

·         Windows Mobile 6.0

·         Windows Mobile 6.5

[返回页首]

3.0 已知问题

3.1

SQL Server Compact 3.5 SP1 联机丛书 (BOL) 和 Microsoft Synchronization Services for ADO.NET 文档仅可从 Microsoft 下载中心下载,不随 Visual Studio 2010 或 SQL Server 2008 R2 一起提供。若要从 SQL Server 2008 R2 文档中访问这些集合以及从 SQL Server 2008 R2 中访问 F1 帮助,您必须将这些集合添加到 SQL Server 组合帮助集中。为此,请下载 SQL Server Compact 3.5 SP2 联机丛书Microsoft Synchronization Services for ADO.NET 文档。然后,关闭 SQL Server 组合帮助集和 SQL Server 2008 的所有实例。重新打开组合帮助集时,即可从应用程序的目录、索引、搜索和 F1 帮助的代码和用户界面访问 SQL Server Compact 3.5 SP2 联机丛书和 Microsoft Synchronization Services for ADO.NET 联机丛书。

3.2

SQL Server Compact 3.5 SP2 for Devices 的 Windows Installer 文件不随 Visual Studio 2010 一起安装。该文件可从 Microsoft 下载中心下载。

3.3

通过运行 SQL Server Compact 3.5 SP2 MSI,可从 SQL Server Compact 3.5、SQL Server Compact 3.5 SP1 或 SQL Server Compact 3.5 SP2 Beta 升级到 SQL Server Compact 3.5 SP2。

卸载 CTP 或测试版的 Visual Studio 2010 或 SQL Server 2008 R2 不会卸载 SQL Server Compact 3.5 SP2 Beta。您必须先手动删除 SQL Server Compact 3.5 SP2 的预发行版安装,再安装 Visual Studio 2010 或 SQL Server 2008 R2 的发行版,如下所示:

·        卸载 CTP 或测试版的 Visual Studio 2010。

·        在 Windows Vista、Windows 7、Windows Server 2008 或 Windows Server 2008 R2 上,单击“开始”,再单击“控制面板”然后双击“程序和功能”。卸载 SQL Server Compact 3.5 SP2 和 SQL Server Compact 3.5 SP2 服务器工具的所有预发行版安装。

·        在 Windows XP 或 Windows Server 2003 上,单击“开始”,再单击“控制面板”,然后双击“添加或删除程序”。卸载 SQL Server Compact 3.5 SP2 和 SQL Server Compact 3.5 SP2 服务器工具的所有预发行版安装。

 

3.4

SQL Server Compact 3.5 SP2 不使用 SqlCeConnection 类的 Encrypt 属性,您不应使用此属性来加密数据库文件。

注意:

在将来的版本中将会弃用 Encrypt 属性。SQL Server Compact 3.5 SP2 只是为了向后兼容才保留了此属性。

使用 SqlCeConnection 类的 Encryption Mode 属性对 SQL Server Compact 3.5 SP2 数据库文件进行加密。下面的示例演示 Encryption Mode 属性的用法:

·        创建新的加密 SQL Server Compact 3.5 SP2 数据库:
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()

·        将 SQL Server 2005 Compact Edition(3.1 版)或 SQL Server 2005 Mobile Edition(3.0 版)数据库升级到加密的 SQL Server Compact 3.5 SP2 数据库:
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>;")

·        更改现有 SQL Server Compact 3.5 SP2 数据库的加密模式:
C#:

SqlCeEngine engine = new SqlCeEngine("Data Source=Northwind.sdf;Password=<enterStrongPasswordHere>;");

engine.Compact("Data Source=Northwind.sdf;encryption mode=ppc2003 compatibility;Password=<enterStrongPasswordHere>;");

Visual Basic:

Dim engine As SqlCeEngine = New SqlCeEngine("Data Source=Northwind.sdf;Password=<enterStrongPasswordHere>;")

engine.Compact("Data Source=Northwind.sdf;encryption mode=ppc2003 compatibility;Password=<enterStrongPasswordHere>;")

·        对未加密的 SQL Server Compact 3.5 SP2 数据库进行加密:
C#:

SqlCeEngine engine = new SqlCeEngine("Data Source=Northwind.sdf");

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

Visual Basic:

Dim engine As SqlCeEngine = New SqlCeEngine("Data Source=Northwind.sdf;")

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

 

3.5

将 Visual Studio 2005 或 Visual Studio 2008 SP1 升级到 Visual Studio 2010 时,不会升级加密的 SQL Server Compact 数据库,并且必须重新发布 ClickOnce 应用程序。

由早期版本的 SQL Server Compact 创建的数据库文件 (*.sdf) 与 SQL Server Compact 3.5 SP2 不兼容。当 Visual Studio 2005 或 Visual Studio 2008 项目升级到 Visual Studio 2010 时,只升级早期版本 SQL Server Compact 中未加密的数据库文件。必须手动升级加密的数据库文件。如果 Visual Studio 2005 或 Visual Studio 2008 项目使用 ClickOnce 发布应用程序,则在项目升级到 Visual Studio 2010 中后应重新发布应用程序。

使用以下步骤可对加密的数据库文件进行手动升级:

1.  单击“数据”。

2.  单击“添加新数据源”。

3.  单击“添加连接”。

如果打开早期版本的数据库文件,则将显示一条消息。如果单击“确定”,则将出现“升级到 SQL Server Compact 3.5 数据库”对话框。

 

或者,也可将 SqlCeEngine.Upgrade 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>;")

 

3.6

如果项目使用 ClickOnce 发布应用程序,则在项目升级到 Visual Studio 2010 中后应重新发布应用程序。在 Visual Studio 2010 中重新发布 ClickOnce 应用程序时,可能会收到一条警告:未能为引导程序找到 SQL Server 2005 Compact Edition 系统必备。应忽略该警告。

3.7

应显式设置 SqlDbTypeDbType 之类参数的 SQL Server Compact 3.5 SP2 数据类型。

如果未显式设置 SqlDbTypeDbType 之类参数的数据类型,将会引发异常。若要解决此问题,请显式设置 SqlDbTypeDbType 之类参数的数据类型。这对 BLOB 数据类型(image 和 ntext)很重要。代码示例显示如下:


C#:

SqlCeEngine engine = new SqlCeEngine(connString);

engine.CreateDatabase();

engine.Dispose();

 

SqlCeConnectionconn = new SqlCeConnection(connString);

conn.Open();

 

SqlCeCommandcmd = conn.CreateCommand();

cmd.CommandText = "CREATE TABLE BlobTable(name nvarchar(128), blob ntext);";

cmd.ExecuteNonQuery();

 

cmd.CommandText = "INSERT INTO BlobTable(name, blob) VALUES (@name, @blob);";

SqlCeParameterparamName = cmd.Parameters.Add("name", SqlDbType.NVarChar, 128);

SqlCeParameterparamBlob = cmd.Parameters.Add("blob", 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(name nvarchar(128), blob ntext);"

cmd.ExecuteNonQuery()

 

cmd.CommandText = "INSERT INTO BlobTable(name, blob) VALUES (@name, @blob);"

Dim paramName As SqlCeParameter

Dim paramBlob As SqlCeParameter

paramName = cmd.Parameters.Add("name", SqlDbType.NVarChar, 128)

paramBlob = cmd.Parameters.Add("blob", SqlDbType.NText)

paramName.Value = "Name1"

paramBlob.Value = "Name1".PadLeft(4001)

 

cmd.ExecuteNonQuery()

 

3.8

使用 DbProviderFactory 加载 SQL Server Compact 3.5 SP2 提供程序的 ClickOnce 应用程序在以下情况下将无法运行:

 

·        计算机上已安装了 SQL Server Compact 3.5 SP2 和 .NET FX 2.0、3.0 或 3.5,而 ClickOnce 应用程序在计算机上安装 .NET FX 4 和 SQL Server Compact 3.5 SP2。

 

·        计算机上已安装了 SQL Server Compact 3.5 SP2 和 .NET FX 4,而 ClickOnce 应用程序在计算机上安装 .NET FX 2.0、3.0 或 3.5。

 

在这些情况下,ClickOnce 应用程序将无法运行,因为不会重新安装 SQL Server Compact,并且 SQL Server Compact 项也不会写入 ClickOnce 应用程序安装的 .NET FX 版本的 machine.config 文件中。由于 SQL Server Compact 项不在此 machine.config 文件中,因此使用 DbProviderFactory 方法的应用程序无法加载 SQL Server Compact 提供程序,从而导致该应用程序失败。

 

发生这种情况是因为:仅当以下注册表项不存在时,才会重新安装 SQL Server Compact(否则,会跳过重新安装 SQL Server Compact,假定它已正确安装):

 

"HKLM\SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v3.5\GAC\System.Data.SqlServerCe.dll_<LOC>"

 

<LOC> 是语言代码,如 ENU 表示英语。

 

当 SQL Server Compact 在已安装了 .NET FX 2.0、3.0 或 3.5 的计算机上安装时会创建此注册表项。安装 ClickOnce 应用程序时,它将安装 .NET FX 4,然后尝试安装 SQL Server Compact。如果在安装 Compact 时,该应用程序发现此注册表项已创建,则会跳过 SQL Server Compact 的重新安装。因此,安装 .NET FX 4 时不会修复 SQL Server Compact,也不会在 .NET FX 4 的 machine.config 文件中写入必需项。当应用程序是使用 .NET FX 2.0、3.0 或 3.5 编译的并且已在计算机上安装 .NET FX 4 时,也会出现这种情况。

 

该问题的解决方法是:通过“添加/删除程序”修复安装的 SQL Server Compact 3.5 SP2。若要修复安装的 SQL Server Compact 3.5 SP2,请单击“开始”,再单击“控制面板”,然后双击“程序和功能”。转到 Microsoft SQL Server Compact 3.5 SP2,将其选中并右键单击,然后单击“修复”。此时将启动 SQL Server Compact 3.5 SP2 的修复对话框。请执行该对话框中的步骤来完成修复。

 

3.9

如果使用 SQL Server Compact 3.5 SP2 创建了一个新数据库文件,但使用 SQL Server Compact 3.5 SP1 运行时对此数据库文件启用了更改跟踪(适用于 Synchronization Services for ADO.NET 1.0 SP1、Sync Framework 1.0 或 Sync Framework 2.0),则在 SQL Server Compact 3.5 SP1 升级到 SQL Server Compact 3.5 SP2 时会出现问题。在这种情况下,不会升级数据库文件中的更改跟踪架构,也不会向跟踪更改的表添加上下文列。

若要避免此问题,请确保在使用 SQL Server Compact 3.5 SP2 创建数据库的情况下,也使用 SQL Server Compact 3.5 SP2 来启用更改跟踪。

3.10

如果并行安装了 SQL Server 2008 和 SQL Server 2008 R2,然后卸载了 SQL Server 2008,则会卸载 SQL Server Compact 3.5 SP2 查询工具的 Windows Installer 文件 (MSI)。同样,如果并行安装了 SQL Server 2008 和 SQL Server 2008 R2,然后卸载了 SQL Server 2008 R2,则会卸载 SQL Server Compact 3.5 SP1 查询工具的 MSI。卸载查询工具 MSI 意味着 SQL Server Management Studio (SSMS) 和 SQL Server Integration Studio (SSIS) 不能再与 SQL Server Compact 连接。

若要解决此问题,请为 SQL Server Compact 3.5 SP1 查询工具或 SQL Server Compact 3.5 SP2 查询工具安装 SSCESqlWbTools<Language>.msi。该文件位于 SQL Server 2008 或 SQL Server 2008 R2 安装介质上的 Servers\Setup 文件夹中。

注意:<Language> 是查询工具 MSI 的语言占位符。例如,ENU 表示英语,JPN 表示日语。

4.0 其他信息

本节介绍如何获取有关 SQL Server Compact 的帮助以及如何提供反馈信息。

4.1 获取 SQL Server Compact 帮助

有关详细信息,请参阅 SQL Server Compact 论坛SQL Server Compact 3.5 团队博客

4.2 提供有关 SQL Server Compact 的反馈

提供有关 SQL Server Compact 的建议和 Bug 报告:

·         MSDN 产品反馈网站提交有关 SQL Server Compact 的功能或用户界面的建议和 Bug 报告。

·         使用 SQL Server Compact 联机丛书中的反馈功能发送有关此文档的建议或错误报告。

[返回页首]