应用对象
Access 2010 Access 2007

随着时间的推移,大多数数据库应用程序都会增长,变得更加复杂,并且需要支持更多的用户。 在 Microsoft Office Access 应用程序生命周期的某个时刻,你可能需要考虑将其升级为Microsoft SQL Server数据库,以优化性能、可伸缩性、可用性、安全性、可靠性和可恢复性。

本文内容

关于Microsoft Office Access 数据库的大小

升级是将部分或所有 数据库对象 从 Access 数据库迁移到新的或现有的SQL Server数据库或新的 Access 项目 (.adp) 的过程。

将数据库调整为SQL Server的好处

  • 高性能和可伸缩性    在许多情况下,SQL Server比 Access 数据库提供更好的性能。 SQL Server还提供对非常大的 TB 大小的数据库的支持,这远远大于当前两 GB 的 Access 数据库的限制。 最后,SQL Server的工作方式非常高效,方法是在单个进程中使用多个本机线程并行处理查询 (来处理用户请求) ,并在添加更多用户时最大程度地减少额外的内存需求。

  • 提高了可用性    SQL Server允许在使用数据库时对数据库执行动态备份(增量备份或完整备份)。 因此,不必强制使用户退出数据库即可备份数据。

  • 提高了安全性    使用受信任的连接,SQL Server可以与 Windows 系统安全性集成,以提供对网络和数据库的单个集成访问,同时采用这两种安全系统的最佳功能。 这使得管理复杂的安全方案变得更加容易。

  • 可立即恢复性    如果出现系统故障 ((例如作系统崩溃或电源中断) ),SQL Server具有自动恢复机制,可在几分钟内将数据库恢复到最后一致性状态,无需数据库管理员干预。

  • 基于服务器的处理    在客户端/服务器配置中使用SQL Server可以减少网络流量,方法是在将结果发送到客户端之前处理服务器上的数据库查询。 让服务器执行处理通常要高效得多,尤其是在处理大型数据集时。

    应用程序还可以使用用户定义的函数、存储过程和触发器来集中和共享服务器(而不是客户端)上的应用程序逻辑、业务规则和策略、复杂查询、数据验证和引用完整性代码。

纵向扩展的方法

“调整大小向导”将数据库对象及其包含的数据从 Access 数据库移动到新的或现有的SQL Server数据库。

有三种方法可以使用“调整大小向导”:

  • 将所有数据库对象从 Access 数据库放大到 Access 项目,以便可以创建客户端/服务器应用程序。 此方法需要对代码和复杂查询进行一些额外的应用程序更改和修改。

  • 仅将数据或数据定义从 Access 数据库纵向扩展为SQL Server数据库。

  • 将 Access 数据库前端创建到SQL Server数据库后端,以便可以创建 前端/后端应用程序 。 此方法只需要很少的应用程序修改,因为代码仍在使用 Access 数据库引擎 (ACE) 。

在增加 Access 数据库大小之前

在将 Access 数据库增加到SQL Server数据库或 Access 项目之前,请考虑执行以下作:

  • 备份数据库     尽管“调整大小向导”不会从 Access 数据库中删除任何数据或数据库对象,但最好先创建 Access 数据库的备份副本,然后再将其调整大小。

  • 确保有足够的磁盘空间     设备上必须有足够的磁盘空间来包含纵向扩展的数据库。 当有足够的可用磁盘空间时,“调整大小向导”效果最佳。

  • 创建唯一索引     链接表必须具有唯一索引才能在 Access 中更新。 “调整大小向导”可以增加现有唯一索引的大小,但不能创建一个不存在的唯一索引。 如果希望能够更新表,请确保在调整大小之前向每个 Access 表添加唯一索引。

  • 为自己分配对SQL Server数据库的相应权限

    • 若要升级到现有数据库,需要 CREATE TABLE 和 CREATE DEFAULT 权限。

    • 若要生成新数据库,需要对 Master 数据库中的系统表具有 CREATE DATABASE 权限和 SELECT 权限。

Access 2007 调整大小向导经过优化,可与 Microsoft SQL Server 2000 和 SQL Server 2005 配合使用。

返回页首

使用“调整大小向导”

  • 在“数据库工具”选项卡上的“移动数据”组中,单击“SQL Server”。

    “调整大小向导”将启动。

步骤 1:选择升级为现有数据库或新数据库

在向导的第一页上,指定是要将 Access 数据库增加到现有SQL Server数据库,还是要创建新的SQL Server数据库。

  • 使用现有数据库    如果选择此选项,然后单击“下一步”,Access 将显示“选择数据源”对话框,以便可以创建与现有 SQL Server 数据库的 ODBC 连接。

    关于 ODBC 数据源

    数据源是与访问该数据所需的连接信息相结合的数据源。 数据源的示例包括 Access、SQL Server、Oracle RDBMS、电子表格和文本文件。 连接信息示例包括服务器位置、数据库名称、登录 ID、密码以及说明如何连接到数据源的各种 ODBC 驱动程序选项。

    在 ODBC 体系结构中,应用程序 ((如 Access 或 Microsoft Visual Basic 程序)) 连接到 ODBC 驱动程序管理器,后者又使用特定的 ODBC 驱动程序 (例如,Microsoft SQL ODBC 驱动程序) 连接到数据源 (在这种情况下,SQL Server数据库) 。 在 Access 中,可以使用 ODBC 数据源将外部数据源连接到无内置驱动程序的 Access​​。

    要连接这些数据源,必须执行以下操作:

    • 在包含数据源的计算机上安装相应的 ODBC 驱动程序。

    • 定义数据源名称 (DSN),具体方法是使用“ODBC 数据源管理器”将连接信息存储到 Microsoft Windows 注册表或 DSN 文件中,或者使用 Visual Basic 代码中的连接字符串将连接信息直接传送到 ODBC 驱动程序管理器。

      机器数据源

      计算机数据源使用用户定义的名称将连接信息存储在特定计算机上的 Windows 注册表中。 只能在定义机器数据源的计算机上使用机器数据源。 机器数据源分为两种类型,用户和系统。 用户数据源只能由当前用户使用,并且只对该用户可见。 系统数据源可由计算机上的所有用户使用,并且对计算机和系统范围内服务上的所有用户均可见。 需要提供增强的安全性时,机器数据源尤其有用,因为只有登录的用户才可以查看机器数据源,并且远程用户无法将它复制到另一台计算机上。

      文件数据源

      文件数据源(也称为 DSN 文件)将连接信息存储在文本文件中,而不是 Windows 注册表中,并且其使用通常比机器数据源更灵活。 例如,可以将文件数据源复制到具有正确 ODBC 驱动程序的任何计算机,以便应用程序可以依赖于它使用的所有计算机的一致和准确的连接信息。 也可以将文件数据源置于一台服务器上,在网络上的多个计算机之间共享,并轻松地将连接信息保留在一个位置。

      文件数据源也可以是不可共享的。 不可共享的文件数据源驻留在一台计算机上,并指向计算机数据源。 可以使用不可共享的文件数据源访问来自文件数据源的现有机器数据源。

      连接字符串

      在模块中,可以定义用于指定连接信息的带格式连接字符串。 连接字符串将连接信息直接传递给 ODBC 驱动程序管理器,它通过消除系统管理员或用户在使用数据库之前先创建 DSN 的要求来帮助简化应用程序。

  • 创建新数据库    如果选择此选项,然后单击“下一步”,Access 将显示一个页面,可在其中输入有关新SQL Server数据库的信息。

    • 你希望对此数据库使用哪些SQL Server?     键入要使用的服务器的名称。

    • 使用受信任的连接     可以使用受信任的连接,即SQL Server可与 Windows作系统安全性集成,以提供对网络和数据库的单个登录。

    • 登录 ID 和密码     如果不使用受信任的连接,请在服务器上键入具有 CREATE DATABASE 特权的帐户的登录 ID 和密码。

    • 新SQL Server数据库的名称是什么?     键入新SQL Server数据库的名称。 如果与现有数据库名称冲突,Access 会修改名称,并在 mydatabase 1 (添加编号后缀,例如) 。

部分顶部

步骤 2:选择要升级的表

在此步骤中,选择要升级到 SQL Server 数据库的 Access 表。 选择要纵向扩展的表,然后使用箭头按钮将其移动到“导出到SQL Server列表。 或者,可以双击表,将其从一个列表移动到另一个列表。

可用表”列表包括除SQL Server数据库中已有SQL Server表之外的所有链接表。 指向已选择用于调整大小的SQL Server数据库的链接表将自动显示在“导出为SQL Server”列表框中,无法删除。 还会排除当前在 导航窗格 中不可见的表,包括隐藏的表和系统表。

提示: 名称以“_local”结尾的任何表都从可用表列表中排除,以防止已调整表的大小。 如果确实想要再次增加这些表的大小,请在运行“调整大小向导”之前将其重命名,方法是删除后缀“_local”。

部分顶部

步骤 3:指定要升级的属性和选项

在此步骤中,选择要将哪些表属性增加到SQL Server数据库。 默认情况下,会选择所有属性来增加大小。

注意: 默认情况下,“调整大小向导”会将 Access 字段名称转换为法定SQL Server字段名称,并将 Access 数据类型转换为等效SQL Server数据类型。

想要纵向扩展哪些表属性?

下表列出了可以纵向调整的属性,并介绍了“调整大小向导”如何处理每个属性:

属性

已选择的作

索引

“调整大小向导”将调整所有索引。

调整大小向导将 Access 主键转换为SQL Server索引,并将其标记为SQL Server主键。 如果选择将 upsized SQL Server 表链接到 Access 数据库,则 Upsizing Wizard 还会向索引名称添加前缀“aaaaa”。 这是因为 Access 选择在可用索引列表中按字母顺序首先作为主键的索引,而“aaaaa”前缀可确保选择正确的索引。

所有其他索引保留其名称,但非法字符替换为“_”字符的情况除外。 唯一和非唯一的 Access 索引将成为唯一且非唯一的SQL Server索引。

链接表必须具有唯一索引才能在 Access 中更新。 “调整大小向导”可以增加现有唯一索引的大小,但不能创建一个不存在的唯一索引。 如果希望在调整表大小后能够更新表中的数据,请确保在调整大小时向每个 Access 表添加唯一索引。

验证规则

“调整大小向导”将以下内容作为更新和插入触发器进行大小调整:

  • 所有字段 必需 属性

  • 表验证规则

  • 记录有效性规则

  • 字段验证规则

触发器是一系列与 SQL Server 表关联的 Transact-SQL 语句。 一个表可以有三个触发器,每个触发器分别用于可以修改表中数据的命令:UPDATE、INSERT 和 DELETE 命令。 执行命令时,会自动执行触发器。 “调整大小向导”使用触发器而不是SQL Server规则来强制实施字段级验证,因为SQL Server规则不允许显示自定义错误消息。

每个验证规则不一定具有与触发器的一对一对应关系。 每个验证规则可能成为多个触发器的一部分,每个触发器可能包含用于模拟多个验证规则功能的代码。

如果将 Access 字段的 Required 属性设置为 true,则用户无法插入记录并将所需字段保留为 null ((如果没有默认绑定到字段) ,或者在更新记录时将该字段设置为 null。 必填字段将纵向扩展为不允许SQL Server Null 值的字段。

验证文本

Access 数据库 验证文本 属性转换为 Access 项目 验证文本 属性。 这允许在运行时出现约束冲突时显示 Access 友好错误消息。

默认设置

“调整大小向导”将所有 默认值 属性调整为美国国家标准协会 (ANSI) 默认对象。

表关系

“调整大小向导”将调整所有表关系。

可以通过使用更新、插入或删除触发器或使用声明的引用完整性 (DRI) 来决定如何增加表关系和引用完整性。 DRI 的工作方式与 Access 引用完整性相同,方法是定义基表的主键约束 (一对多关系的“一”端) 和外键约束,外表 (通常是一对多关系) 的“多”端。

  • 使用 DRI     选择“ 表关系 ”和“ 使用 DRI ”以强制实施引用完整性。 Access 数据库列验证转换为具有验证消息的 SQL Server DRI 检查 约束,如下表所示。

访问数据库关系

SQL Server外键

Validatio n Text

级联更新

ON DELETE NO ACTION ON UPDATE CASCADE

“无法删除该记录,因为表 <外表> 包含相关记录。”

级联删除

ON DELETE CASCADE ON UPDATE NO ACTION

“无法添加或更改记录,因为表 <主表> 中需要相关记录。”

级联更新 和级联删除

在更新级联时删除级联

未设置值。

无 DRI

ON DELETE NO ACTION ON UPDATE NO ACTION

无法添加、更改或删除此记录,因为表 <主表> 和 <外表> 之间的关系限制。

  • 使用触发器     如果在 Access 表关系中定义了级联更新或删除,并且想要在纵向扩展的表中保留此行为,请选择“ 表关系 ”和“ 使用触发器”。 这会将级联更新或删除大小作为触发器来强制实施引用完整性。

    表关系不一定与触发器具有一对一对应关系。 每个关系可能成为多个触发器的一部分,或者每个触发器可能包含用于模拟多个引用完整性规则功能的代码。 插入触发器用于子表,删除触发器用于父表。

    注意: 访问需要 DRI 来读取SQL Server数据库的 数据库关系图 。 为了允许 Access 在通过触发器强制实施引用完整性的同时读取数据库关系图,“调整大小向导”会将 DRI 置于关系上,但关闭外键约束的检查。

要包含哪些数据选项?

  • 向表添加时间戳字段    SQL Server使用时间戳字段来指示 (更改了记录,但在) 更改时,该记录已更改,方法是创建唯一值字段,然后在记录更新时更新此字段。 对于链接表,Access 使用时间戳字段中的值来确定在更新记录之前是否已更改。 通常,时间戳字段可提供最佳性能和可靠性。 如果没有时间戳字段,SQL Server必须检查记录中的所有字段,以确定记录是否已更改,这会降低性能。

    下表描述了此列表中可用的设置:

设置

说明

是,让向导决定

如果原始 Access 表包含浮点 (Single 或 Double) 、备注或 OLE 对象 字段,则“调整大小向导”会在这些字段的生成SQL Server表中创建新的时间戳字段。

是,始终

“调整大小向导”为所有上放表创建时间戳字段,而不管表包含哪些字段类型。 这可以提高可能不包含备注、OLE 对象或浮点字段但具有其他类型的字段的纵向扩展 Access 表的性能。

否,从不

“调整大小向导”不会向表添加时间戳字段。

重要: 在链接的SQL Server表中,Access 不会检查确定 Memo 或 OLE 对象字段是否已更改,因为这些字段的大小可能很多兆字节,并且比较可能过于占用网络和耗时。 因此,如果只有文本或图像字段已更改,并且没有时间戳字段,Access 将覆盖更改。 此外,浮点字段的值在未更改时可能看起来已更改,因此如果没有时间戳字段,Access 可能会确定记录在未更改时已更改。

  • 仅创建表结构,不调整任何数据    默认情况下,“调整大小向导”会将所有数据调整为SQL Server。 如果选择“仅创建表结构,不要检查调整任何数据”框,则只会对数据结构进行纵向调整。

部分顶部

步骤 4:选择如何升级应用程序

在向导的下一页上,可以选择三种不同的方法之一来提升 Access 数据库应用程序。 在“ 要进行哪些应用程序更改?”下,选择以下选项之一:

  • 创建新的 Access 客户端/服务器应用程序    如果选择此选项,则“调整大小向导”将创建新的 Access 项目。 调整大小向导会提示输入名称(默认为当前 Access 数据库名称),添加“CS”后缀,然后将项目存储在与现有 Access 数据库相同的位置。

    “调整大小向导”创建 Access 项目文件,然后将所有数据库对象从 Access 数据库向上调整到 Access 项目。 如果不保存密码和用户 ID,则首次打开 Access 项目时,Access 将显示“数据链接属性”对话框,以便你可以连接到SQL Server数据库。

  • 将SQL Server表链接到现有应用程序    如果选择此选项,则“调整大小向导”将修改 Access 数据库,以便查询、窗体、报表和数据访问页使用新 SQL Server 数据库中的数据,而不是 Access 数据库中的数据。 调整大小向导使用后缀“_local”重命名您向上调整大小的 Access 表。 例如,如果纵向扩展名为 Employees 的表,则会在 Access 数据库中Employees_local重命名该表。 然后,“调整大小”向导创建名为 Employees 的链接SQL Server表。

    注意: 调整大小作完成后,将不再使用已重命名为“_local”后缀的表。 但是,最好保留本地表,直到验证调整大小是否成功。 稍后,可以删除本地表以减小 Access 数据库的大小。 删除任何表之前,请务必备份数据库。

    基于原始 Employees 表的查询、窗体、报表和数据访问页现在将使用链接SQL Server Employees 表。 原始本地表中字段的许多属性由新的本地表继承,包括 DescriptionCaptionFormatInputMaskDecimalPlaces

  • 无应用程序更改    如果只想将数据复制到SQL Server数据库,而不对现有 Access 数据库应用程序进行任何其他更改,请选择此选项。

保存密码和用户 ID    默认情况下,“调整大小向导”会在现有应用程序中创建链接表或创建 Access 项目,而无需保存用户名和密码。 这意味着,每次用户登录到SQL Server数据库时,系统都会提示用户输入用户名和密码。

如果选择“保存密码和用户 ID”,则用户无需登录即可连接到SQL Server数据库。 如果选择“创建新的 Access 客户端/服务器应用程序”,Access 项目会将用户名密码存储在 OLE DB 连接字符串中。

注意: 如果链接SQL Server表配置了 MSysConf 表以拒绝保存密码,则禁用此选项。

“调整大小向导”报表

单击“ 完成”时,“调整大小向导”会创建一个报表,其中详细说明了创建的所有对象,并报告在此过程中遇到的任何错误。 “调整大小向导”在“打印预览”中显示报表,然后你可以打印或保存报表,例如,作为 XPS 或 PDF 文件。 关闭“打印预览”窗口时,报表不会另存为 Access 对象。

“调整大小向导”报表包含有关以下内容的信息:

  • 调整参数,包括你选择升迁的表属性以及如何调整大小。

  • 表信息,包括对名称、数据类型、索引、验证规则、默认值、触发器以及是否添加时间戳的 Access 和SQL Server值的比较。

  • 遇到任何错误,例如数据库或事务日志已满、权限不足、未创建设备或数据库、跳过表、默认或验证规则、未强制实施关系、查询跳过 (,因为它无法转换为SQL Server语法) ,以及表单和报表中的 控件 和 记录源 转换错误。

部分顶部

返回页首

数据库对象如何纵向扩展

以下数据和数据库对象将得到升值:

  • 数据和数据类型    所有 Access 数据库数据类型都转换为SQL Server中的等效类型。 该向导通过将 Unicode 字符串标识符添加到所有字符串值并将 Unicode n 前缀添加到所有数据类型,将 Access 数据库文本转换为 Unicode。

  • 查询    

    • 没有 ORDER BY 子句或参数的选择查询将转换为视图。

    • 作查询将转换为存储过程作查询。 Access 在参数声明代码之后添加 SET NOCOUNT ON,以确保存储过程运行。

    • 仅引用表 (也称为基查询) 使用参数或 ORDER BY 子句的选择查询将转换为用户定义的函数。 如有必要,会将 TOP 100 PERCENT 子句添加到包含 ORDER BY 子句的查询中。

    • 使用命名参数的参数查询会保留 Access 数据库中使用的原始文本名称,并将其转换为存储过程或内联用户定义函数。

      注意: 可能需要手动转换未升级的查询,例如 SQL 直通查询、数据定义查询和交叉表查询。 可能还需要手动调整嵌套太深的查询大小。

  • Forms、报表和控件    窗体、报表或控件的 RecordSourceControlsSourceRowSource 属性中的 SQL 语句保持不变,不会转换为存储过程或用户定义的函数。

  • 启动属性    “调整大小向导”将调整以下启动属性:

    StartUpShowDBWindowStartUpShowStatusBarAllowShortcutMenusAllowFullMenusAllowBuiltInToolbarsAllowToolbarChangesAllowSpecialKeysUseAppIconForFrmRptAppIconAppTitleStartUpFormStartUpMenuBarStartupShortcutMenuBar

  • 模块和宏    “放大”向导不会对模块或宏进行任何更改。 可能需要修改应用程序才能充分利用SQL Server的功能。 有关详细信息,请参阅 MSDN 文章优化Microsoft链接到SQL Server的 Office Access 应用程序

返回页首

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。