使用“升迁向导”将 Access 数据移动至 SQL Server 数据库

一段时间,大多数数据库应用程序扩展、 变得更复杂,并需要支持多个用户。在 Microsoft Office Access 应用程序的生命周期中的某些时候,您可能需要考虑到 Microsoft SQL Server 数据库以优化性能、 可伸缩性、 可用性、 安全、 可靠性和恢复到其升迁。

本文内容

有关升迁 Microsoft Office Access 数据库

使用升迁向导

如何升迁数据库对象

有关升迁 Microsoft Office Access 数据库

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

升迁到 SQL Server 数据库的好处

  • 高性能和可伸缩性   在许多情况下,SQL Server 提供更好的性能比 Access 数据库。SQL Server 还提供支持超大型、 terabyte 大小的数据库,这是更大超过两个千兆字节的 Access 数据库中的当前限制。最后,SQL Server 所做的工作非常高效地处理并行 (使用单个流程中的多个本机线程处理用户请求) 中的查询并添加更多用户时,需要额外的内存最小化。

  • 提高了可用性   SQL Server 允许您执行动态备份,增量或已完成时使用的数据库。因此,您不具有强制退出数据库备份数据的用户。

  • 提高了安全性   使用受信任的连接,SQL Server 可以集成 Windows 系统安全提供单个集成的访问网络和数据库,尽量利用这两个安全系统。这使得更易于管理复杂的安全方案。

  • 立即恢复   在系统失败的情况下 (如操作系统崩溃或停电),SQL Server 具有将数据库恢复到最后一个一致性在数分钟,其中没有数据库管理员参与的状态的自动恢复机制。

  • 基于服务器的处理   使用 SQL Server 客户端/服务器配置中,通过将结果发送给客户端之前处理数据库服务器上的查询,减少了网络流量。让服务器进行处理是通常更加高效,尤其是在处理大型数据集。

    您的应用程序也可以使用用户定义函数、 存储的过程和触发器集中和共享应用程序逻辑、 业务规则和策略、 复杂的查询,数据有效性和参照完整性代码在服务器上,而不是客户端上。

升迁的方法

升迁向导数据库对象和移动所包含的数据从 Access 数据库到新的或现有的 SQL Server 数据库。

有三种方法使用升迁向导︰

  • 升迁从 Access 数据库访问的所有数据库对象的都项目,以便您可以创建客户端/服务器应用程序。此方法要求的一些其他应用程序更改和修改的代码和复杂查询。

  • 升迁仅数据或从 Access 数据库的 SQL Server 数据库的数据定义。

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

之前升迁 Access 数据库

之前升迁 Access 数据库到 SQL Server 数据库或 Access 项目,请考虑下列操作︰

  • 备份数据库    虽然升迁向导时不会删除任何数据或数据库对象从 Access 数据库,它是最好是创建备份的 Access 数据库升迁之前将其复制。

  • 确保具有足够磁盘空间    您必须具有足够的空间中,在包含升迁设备上。当有大量磁盘空间时,升迁向导的效果最佳。

  • 创建唯一索引    链接的表必须具有唯一索引在 Access 中更新。升迁向导能升迁现有唯一索引,但不能创建在不存在。如果您想要能够更新您的表,请确保在升迁之前每个 Access 表中添加一个唯一索引。

  • 为自己分配适当的权限的 SQL Server 数据库

    • 升迁到现有数据库,您需要创建表和创建默认的权限。

    • 若要生成新的数据库,您需要创建数据库的权限和母版中的系统表选择权限数据库。

Access 2007 升迁向导经优化以使用 Microsoft SQL Server 2000 和 SQL Server 2005。

返回页首

使用升迁向导

  • 数据库工具选项卡的移动数据组中,单击SQL Server

    升迁向导启动。

步骤 1︰ 选择升迁到现有数据库或为新数据库

步骤 2︰ 选择要升迁的表

步骤 3︰ 指定属性和选项可升迁

步骤 4︰ 选择如何升迁您的应用程序

升迁向导报表

步骤 1︰ 选择升迁到现有数据库或为新数据库

在向导的第一页上,您可以指定是否希望升迁到现有的 SQL Server 数据库的 Access 数据库或创建新的 SQL Server 数据库。

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

    有关 ODBC 数据源

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

    在 ODBC 体系结构中,在应用程序 (如 Access 或 Microsoft Visual Basic 程序) 连接到 ODBC 驱动程序管理器,这又使用特定的 ODBC 驱动程序 (例如,Microsoft SQL ODBC 驱动程序) 连接到数据源 (在本例中为 SQL Server 数据库)。在 Access 中,您可以使用 ODBC 数据源连接到数据源访问外部不具有内置驱动程序。

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

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

    • 通过使用任一ODBC 数据源管理器将连接信息存储在 Microsoft Windows 注册表或 DSN 文件或在 Visual Basic 代码传递的连接信息直接向 ODBC 驱动程序管理器中的连接字符串中定义数据源名称 (DSN)。

      计算机数据源

      计算机数据源存储在 Windows 注册表中的用户定义的名称与特定计算机上连接信息。您可以仅在计算机的定义上使用计算机数据源。有两种类型的计算机数据源-用户和系统。用户数据源可以只由当前的用户,并且仅对该用户可见。系统数据源可以由一台计算机上的所有用户,并为计算机和系统范围的服务上的所有用户都均可见。当您想要提供提高的安全性,因为只有登录的用户可以查看计算机数据源和不能将它复制远程用户到另一台计算机,计算机数据源是特别有用。

      文件数据源

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

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

      连接字符串

      在模块中,您可以定义指定连接信息的带格式的连接字符串。连接字符串传递的连接信息直接向 ODBC 驱动程序管理器,并且它可以删除该要求,系统管理员或用户首先创建 DSN 使用数据库之前,从而简化应用程序的帮助。

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

    • 哪些 SQL Server 您想要用于此数据库?    键入您想要使用的服务器的名称。

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

    • 登录 ID 和密码    如果您不使用受信任的连接,键入在服务器上的登录 ID 和密码具有创建数据库权限的帐户。

    • 您想要命名新的 SQL Server 数据库?    键入新的 SQL Server 数据库的名称。如果它与现有数据库名称冲突,并添加编号的后缀 (mydatabase 1,例如),则 access 修订名称。

返回节首

步骤 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 主键。如果您选择要链接到 Access 数据库升迁 SQL Server 表,则升迁向导还会向索引名称添加前缀"aaaaa"。这是因为访问选择第一个字母在列表中可用的索引为主键的索引,"aaaaa"前缀确保已选择了正确的索引。

所有其他索引保留其名称,但非法字符替换为"_"字符的位置。成为唯一的唯一和非唯一访问索引和 SQL Server 的非唯一索引。

链接的表必须具有唯一索引在 Access 中更新。升迁向导能升迁现有唯一索引,但不能创建在不存在。如果您希望能够在升迁后更新您的表中的数据它们,请确保在升迁之前每个 Access 表中添加一个唯一索引。

有效性规则

升迁向导会升迁为更新,然后插入触发器下列操作︰

  • 所有字段所需的属性

  • 表有效性规则

  • 记录有效性规则

  • 字段有效性规则

触发器是一系列 TRANSACT-SQL 语句与 SQL Server 表相关联。一个表可以有三个可以修改表格中的数据的命令的每个触发器︰ 更新、 插入和删除命令。执行命令时,自动执行触发器。升迁向导使用触发器,而不是 SQL Server 规则强制实施字段级别验证,因为 SQL Server 规则不允许您显示自定义错误消息。

每个验证规则不一定与触发器一对一的对应关系。每个有效性规则可能是几个触发器的一部分,并且每个触发器可能包含模拟几个有效性规则的功能的代码。

当 Access 字段的必需属性设置为 true 时,用户无法插入记录,并将必填的字段留空 (如果没有绑定到该字段默认值) 或更新记录时使该字段为空。必填的字段是升迁到 SQL Server 不允许 Null 值的字段。

验证文本

验证文本属性的 Access 数据库转换为 Access 项目有效性文本属性。此项服务使 Access 友好错误消息,若要在运行时约束冲突的情况下会显示。

默认值

升迁向导会升迁所有都默认值属性到美国国家 / 地区标准协会 (ANSI) 都默认的对象。

表关系

升迁向导会升迁所有表关系。

您可以决定如何升迁表关系和参照完整性,通过使用更新、 插入或删除触发器,或通过使用声明参照完整性 (DRI)。通过定义主键约束的基础表 (一对多关系的"一"端) 和外的表 (通常为一对多关系的"多"端) 的外键约束,DRI 工作相同的方式访问参照完整性。

  • 使用 DRI    选择表关系,并使用 DRI使用 DRI 实施参照完整性。Access 数据库列有效性将转换为 SQL Server DRI 检查约束与验证消息如下表所示。

Access 数据库关系

SQL Server 外键

Validatio n 文本

级联更新

在删除任何上更新级联的操作

"由于表 < 外表 > 包含相关的记录,不能删除该记录。"

级联删除

在上的删除级联更新任何操作

"无法添加或更改一条记录,因为相关的记录必需的表 < 主键表 >。"

级联更新
和级联删除

级联删除上更新级联

未设置值。

无 DRI

删除上的没有操作更新任何操作

不能添加、 更改或删除此记录,由于表 < 主键表 > < 外表 > 之间的关系限制。

  • 使用触发器    如果您已定义级联更新或删除您的 Access 表关系,并且您想要保留此行为升迁表中的,选择表关系使用触发器。这会升迁级联更新或删除了为触发器,以实施参照完整性。

    表关系不必与触发器一对一的对应关系。每个关系可能是几个触发器的一部分或每个触发器可能包含模拟多个参照完整性规则的功能的代码。插入触发器子表上使用和删除触发器父表上使用。

    注意: Access 要求 DRI 阅读 SQL Server 数据库数据库关系图 。若要允许访问通过触发器实施参照完整性时读取数据库关系图,升迁向导将 dri 放在关系,但将关闭选中的外键约束。

您想要包括哪些数据选项?

  • 向表添加时间戳字段   SQL Server 通过创建唯一值的字段,然后更新这个字段更新记录时使用的时间戳字段,以指示一条记录的更改 (而不是更改)。链接表,Access 使用时间戳字段中的值确定记录是否已更改之前先更新。一般情况下,时间戳字段提供的最佳性能和可靠性。没有时间戳字段,SQL Server 必须选中该记录来确定是否已更改的记录,这会降低性能中的所有字段。

    下表介绍了此列表中可用的设置︰

设置

描述

是的让决定向导

如果原始的 Access 表包含浮 (单个或双),备注或OLE 对象字段升迁向导在这些字段的生成的 SQL Server 表中创建新的时间戳字段。

是的始终

升迁向导创建时间戳字段为所有升迁的表,而不考虑它们包含什么类型的字段。这将提高升迁的 Access 表可能包含备注、 OLE 对象或浮字段,但其中有其他类型的字段的性能。

否从不

升迁向导不会添加到表中的时间戳字段。

重要: 在链接的 SQL Server 表,Access 不检查以确定备注或 OLE 对象字段已更改,因为这些字段可能的大小和比较的许多兆字节可能太网络密集型、 更加耗时。因此,如果只更改文本或图像的字段,并且没有时间戳字段,Access 将覆盖更改。此外,浮字段的值可能会显示,已更改时没有,以便在没有时间戳字段的情况下,Access 可能确定不具有时该记录具有已更改。

  • 仅创建表结构,不升迁任何数据   升迁向导会升迁到 SQL Server 默认情况下的所有数据。如果选择仅创建表结构,不升迁任何数据复选框,则升迁仅数据结构。

返回节首

步骤 4︰ 选择如何升迁您的应用程序

在向导的下一页上,您可以选择的一个三种不同方式升迁 Access 数据库应用程序。在下您想要更改哪些应用程序?,选择下列选项之一︰

  • 创建一个新的 Access 客户端/服务器应用程序   如果选择此选项时,升迁向导创建新的 Access 项目。升迁向导会提示您输入的名称,默认为当前 Access 数据库的名称,添加"C"后缀,并将存储项目中的现有的 Access 数据库的相同位置。

    升迁向导从 Access 数据库创建 Access 项目文件,然后会升迁所有数据库对象与 Access 项目。如果您不保存密码和用户 ID,然后第一次打开 Access 项目中,Access 显示数据链接属性对话框中,以便您可以连接到 SQL Server 数据库。

  • 向现有的应用程序的链接 SQL Server 表   如果选择此选项,升迁向导将修改 Access 数据库,以便您的查询、 窗体、 报表和数据访问页使用新的 SQL Server 数据库中的数据,而不是 Access 数据库中的数据。Access 升迁向导重命名表格升迁带后缀"_local"。例如,如果升迁表名为员工,表已重命名 Employees_local Access 数据库中的。然后,升迁向导创建链接的 SQL Server 表名为员工。

    注意: 升迁操作完成后,将不再使用的表中使用"_local"后缀已重命名。但是,最好升迁已成功验证之前保留本地的表。以后,您可以删除本地的表,以减少您的 Access 数据库的大小。请务必备份数据库之前删除任何表。

    基于原始员工表的查询、 窗体、 报表和数据访问页现在将使用链接的 SQL Server 员工表。许多原始本地表中的字段的属性继承的新的本地表,包括、说明题注格式输入掩码,和小数位数

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

保存密码和用户 ID   默认情况下,升迁向导在现有的应用程序中创建链接的表,或创建 Access 项目,而不保存的用户名和密码。这意味着,系统将提示用户提供的用户名和密码登录到 SQL Server 数据库每次。

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

注意: 如果链接的 SQL Server 表配置拒绝保存密码MSysConf表,将不改变应用选项禁用此选项。

升迁向导报表

单击完成时,升迁向导创建提供创建,所有对象的详细的说明的报表,并报告过程中遇到的任何错误。升迁向导将显示在打印预览的报表,然后可以打印或保存报表时,例如,为 XPS 或 PDF 文件。当您关闭打印预览窗口时,报表不保存为 Access 对象。

升迁向导报表中包含以下信息︰

  • 升迁参数,包括表属性选择升迁以及如何升迁的方法。

  • 触发表信息,包括名称、 数据类型、 索引、 有效性规则、 默认值,访问和 SQL Server 的值进行比较,以及已添加时间戳。

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

返回节首

返回页首

如何升迁数据库对象

下面的数据和数据库对象的升迁︰

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

  • 查询   

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

    • 动作查询转换为存储的过程动作查询。Access 会在设置 NOCOUNT 添加参数声明代码,以确保存储的过程运行之后。

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

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

      注意: 您可能需要手动转换不升迁,如 SQL 传递查询、 数据定义查询和交叉表查询的查询。您可能还可以手动升迁嵌套太深的查询。

  • 窗体、 报表和控件   窗体、 报表或控件的记录源控件来源行来源属性中的 SQL 语句就地保留,并且不会转换为存储的过程或用户定义的函数。

  • 启动属性   升迁向导会升迁下列启动属性︰

    StartUpShowDBWindow
    StartUpShowStatusBar
    AllowShortcutMenus
    AllowFullMenus
    AllowBuiltInToolbars
    AllowToolbarChanges
    AllowSpecialKeys
    UseAppIconForFrmRpt
    AppIcon
    AppTitle
    StartUpForm
    StartUpMenuBar
    StartupShortcutMenuBar

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

返回页首

注释: 

  • 机器翻译免责声明:本文是由无人工介入的计算机系统翻译的。Microsoft 提供机器翻译是为了帮助非英语国家/地区用户方便阅读有关 Microsoft 产品、服务和技术的内容。由于机器翻译的原因,本文可能包含词汇、语法或文法方面的错误。

  • 请在 此处 中查找本文的英文版本以便参考。你和 Microsoft 社区的其他成员可以使用 Community Translation Framework (CTF) 来改进本文。只需将鼠标悬停在文章中的句子上,然后在 CTF 小组件中单击“IMPROVE TRANSLATION”即可。 单击此处了解有关 CTF 的详细信息。 使用 CTF 即表示你同意服务条款

扩展你的技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×