导入或链接 SQL Server 数据库中的数据

导入或链接 SQL Server 数据库中的数据

可链接到 SQL 数据库或从其导入数据。该数据库是用于任务关键型应用程序的高性能托管数据库。有关详细信息,请参阅 SQL Server 2016

  • 链接到数据时,Access 会创建一个双向连接,将更改同步到 Access 和 SQL 数据库中的数据。

  • 导入数据时,Access 会创建数据的一次性副本,这样就不会同步 Access 和 SQL 数据库中的数据更改。

将 Access 连接到 SQL Server 的概述

开始之前

想要进行得更顺利吗?那就在链接或导入之前做好以下准备工作:

  • 找到 SQL Server 数据库服务器名称,确定必需的连接信息,然后选择身份验证方法(Windows 或 SQL Server)。有关身份验证方法的详细信息,请参阅连接到服务器(数据库引擎)保护你的 SQL 数据库

  • 确定想要链接到或导入的表或视图,以及链接表的唯一值字段。可通过一次操作链接到或导入多张表或多个视图。

  • 考虑每张表或视图中的列数。Access 不支持一张表中超过 255 个字段,因此 Access 只链接或导入前 255 列。变通方案是在 SQL Server 数据库中创建一个视图,用于访问超出限制的列。

  • 确定要导入的数据总量。Access 数据库的最大大小为 2GB,减去系统对象所需的空间。如果 SQL Server 数据库包含大型表格,可能无法将其全部导入一个 Access 数据库。该情况下,可考虑链接到数据,而不是导入数据。

  • 使用受信任的位置和 Access 数据库密码,以保证 Access 数据库和连接信息的安全性。如果选择在 Access 中保存 SQL Server 密码,这一点特别重要。

  • 计划创建附加关系。Access 不会在导入操作结束时自动创建相关表格之间的关系。可使用“关系”窗口,手动创建新表格和现有表格之间的关系。有关详细信息,请参阅什么是“关系”窗口?创建、编辑或删除关系

步骤 1:开始使用

  1. 选择“外部数据”>“新建数据源”>“来自数据库​​”>“来自 SQL Server”。

  2. 在“获取​​外部数据 - ODBC 数据库​​”对话框中,执行下列操作之一:

    • 若要导入数据,请选择“将源数据导入当前数据库的新表中”。

    • 若要链接到数据,请选择“通过创建链接表来链接到数据源”。

  3. 选择“确定”。

步骤 2:创建或重复使用 DSN 文件

可创建一个 DSN 文件,也可重复使用现有文件。想对不同链接和导入操作使用相同的连接信息,或者想与同样使用 DSN 文件的其他应用程序进行共享时,可以使用 DSN 文件。可使用数据连接管理器直接创建 DSN 文件。有关详细信息,请参阅管理 ODBC 数据源

尽管仍可使用早期版本的 SQL ODBC 驱动程序,但建议使用版本 13.1,该版本进行了许多改进,并支持 SQL Server 2016 的新增功能。有关详细信息,请参阅 Microsoft ODBC Driver for SQL Server on Windows(Windows 上的 Microsoft ODBC Driver for SQL Server)。

  1. 执行下列操作之一:

    • 如果希望使用的 DSN 文件已存在,请从列表中选择该文件。

      “选择数据源”对话框

      可能需要再次输入密码,具体取决于在连接信息中输入的身份验证方法。

    • 新建 DSN 文件:

      1. 选择“新建”。

        “新建数据源”对话框
      2. 选择“ODBC Driver 13 for SQL Server”,然后选择“下一步”。

      3. 输入 DSN 文件的名称,或单击“浏览”在其他位置中创建文件。

  2. 单击“下一步”,查看摘要信息,然后单击“完成”。

步骤 3:使用“创建到 SQL Server 的新数据源”向导

在“创建到 SQL Server 的新数据源”向导中,执行下列操作:

  1. 在第 1 页上,输入标识信息:

    • 在“说明”框中,输入 DSN 文件的相关文件信息(可选)。

    • 在“服务器”框中,输入 SQL Server 的名称。请不要单击向下箭头。

  2. 在第 2 页上,选择下面某个身份验证方法:

    • 使用 Windows 集成身份验证   :通过 Windows 用户帐户连接。也可输入服务主体名称 (SPN)。有关详细信息,请参阅 Service Principal Names (SPNs) in Client Connections (ODBC)(客户端连接中的服务主体名称 (SPN) (ODBC))。

    • 使用 SQL Server 身份验证...   :输入登录 ID密码,使用在数据库中设置的凭据进行连接。

  3. 在第 3 页和第 4 页上,选择自定义连接的各个选项。有关详细信息,请参阅 Microsoft ODBC Driver for SQL Server

  4. 之后会出现确认设置的屏幕。选择“测试数据源”以确认连接。

  5. 可能需要登录到数据库。在“SQL Server 登录”对话框中,输入登录 ID 和密码。若要更改其他设置,请选择“选项”。

步骤 4:选择要链接到或导入的表

  1. 在“链接表”或“导入对象”对话框的“”下,选择想要链接或导入的每个表或视图,然后单击“确定”。

    要链接或导入的一系列表
  2. 在链接操作中,确定是否选择“保存密码”。

    安全性   :选择此选项后,每次打开 Access 和访问数据时就无需输入凭据。但它在 Access 数据库中存储未加密的密码,这意味着可访问源内容的用户即可查看用户名和密码。如果选择此选项,强烈建议将 Access 数据库存储在受信任的位置,并创建 Access 数据库密码。有关详细信息,请参阅决定是否信任数据库使用数据库密码加密数据库

步骤 5:创建规格和任务(仅限导入)

结果

链接或导入操作完成后,导航窗格中会出现该表,其名称与 SQL Server 表或视图的相同,且带有所有者名称。例如,如果 SQL 名称是 dbo.Product,则 Access 名称为 dbo_Product。如果名称已被占用,则 Access 将在新的表名称后追加“1”,例如 dbo_Product1。如果 dbo_Product1 也被占用,Access 将创建 dbo_Product2,依此类推。但是也可将表重命名为更有意义的名称。

在导入操作中,Access 永远不会覆盖数据库中的表。虽然不能直接将 SQL Server 数据追加到现有表格中,但可创建追加查询,在从相似的表中导入数据之后追加数据。

在链接操作中,如果列在 SQL Server 表中处于只读状态,则在 Access 中也处于只读状态。

提示    若要查看连接字符串,请在 Access 导航窗格中将鼠标悬停在表上方。

更新链接表的设计

不能添加、删除或修改列,也不能更改链接表中的数据类型。如果想要更改设计,请在 SQL Server 数据库中进行。若要查看 Access 中的设计更改,请更新链接表:

  1. 选择“外部数据”>“链接表管理器”。

  2. 选择想要更新的每个链接表,选择“确定”,然后选择“关闭”。

比较数据类型

Access 数据类型与 SQL Server 数据类型的命名方式不同。例如,SQL Server 中“bit”数据类型的列被导入或链接到 Access 中的“是/否”数据类型。下表对 SQL Server 和 Access 数据类型进行了对比。

SQL Server 数据类型

Access 数据类型

Access 字段大小

bigint

大数

请参阅使用大数数据类型

binary (field size)

Binary

与 SQL Server 字段大小相同

bit

Yes/No

char (field size),其中字段大小小于或等于 255

Text

与 SQL Server 字段大小相同

char (field size),其中字段大小大于 255

Memo

datetime

Date/Time

decimal (precision, scale)

Number

Decimal(Access 精度和小数位数属性与 SQL Server 精度和小数位数一致。)

float

Number

Double

image

OLE 对象

int

Number

Long Integer

money

Currency

nchar (field size),其中字段大小小于或等于 255

Text

与 SQL Server 字段大小相同

nchar (field size),其中字段大小大于 255

Memo

ntext

Memo

numeric (precision, scale)

Number

Decimal(Access 精度和小数位数属性与 SQL Server 精度和小数位数一致。)

nvarchar (field size),其中字段大小小于或等于 255

Text

与 SQL Server 字段大小相同

nvarchar (field size),其中字段大小大于 255

Memo

nvarchar(MAX)

Memo

real

Number

Single

smalldatetime

Date/Time

smallint

Number

Integer

smallmoney

Currency

sql_variant

Text

255

text

Memo

timestamp

Binary

8

tinyint

Number

Byte

uniqueidentifier

Number

复制 ID

varbinary

Binary

与 SQL Server 字段大小相同

varbinary (MAX)

OLE 对象

varchar (field size),其中字段大小小于或等于 255

Text

与 SQL Server 字段大小相同

varchar (field size),其中字段大小大于 255

Memo

varchar(MAX)

Memo

xml

Memo

链接数据或将数据导入 Access 数据库中,即可使用存储在 SQL Server 中的数据。如果和他人共享数据,链接是一个不错的选择,因为数据存储在集中位置,而且可查看最新数据、添加或编辑数据,并在 Access 中运行查询或报告。

注意:  本文不适用于 Access 应用程序 - 使用 Access 设计新型数据库并在线发布。 有关详细信息,请参阅创建 Access 应用程序

步骤 1:准备链接

  1. 查找您希望链接至的 SQL Server 数据库。如有必要,与数据库管理员联系以获得连接信息。

  2. 识别 SQL 数据库中您将链接至的表和视图。您可以一次链接至多个对象。

检查数据源,并注意以下事项:

  • Access 在一个表中最多支持 255 个字段(列),因此,链接表将只包含所链接到的对象的前 255 个字段。

  • 在 SQL Server 表中为只读的列在 Access 中也为只读。

  1. 要在新数据库中创建链接表:请单击“文件”>“新建”>“空白桌面数据库”。要在现有 Access 数据库中创建链接表,请确保拥有将数据添加至数据库所需的权限。

    注意:  在现有 Access 数据库中将会创建一个链接表,其名称与源对象中的名称相同。因此,如果您已经拥有具有相同名称的其他表,新建的链接表名称后会添加一个“1”, ——例如,“联系人1”。(如果“联系人1”也已经使用,Access 将创建“联系人2”,依此类推。)

步骤 2:链接到数据

当在 SQL Server 数据库中链接至表或视图时,Access 可创建反映源表格结构和内容的新表(称为链接表)。您可在 SQL Server 或数据表视图或者来自 Access 中的表单视图中更改数据,这些更改会同时在 SQL 和 Access 中反映。任何对链接表的结构更改,如删除或更改列,必须在 SQL Server 而不是 Access 中进行。

  1. 打开目标 Access 数据库。

  2. 在“外部数据”选项卡上,单击“ODBC 数据库”。

  3. 单击“通过创建链接表来链接到数据源”>“确定”,然后按照向导中的步骤操作。在“数据源”对话框中,如果想使用的 .dsn 文件已存在,则在列表中单击此文件。

    新建 .dsn 文件:

    在“选择数据源”框中,单击“新建”>“SQL Server”>“下一步”。

    1. 为 .dsn 文件键入名称,或者单击“浏览”。

      注意: 需要具有该文件夹的写入权限才能保存 .dsn 文件。

    2. 单击“下一步”,查看摘要信息,并单击“完成”。

      按照“对 SQL Server 创建新的数据源”向导中的步骤操作。

  4. 单击“确定”并在“”下方,单击您希望链接至的每个表或视图,然后单击“确定”。

如果您查看“选择唯一的记录标识符”,这意味着 Access 无法确定哪个字段或哪些字段可唯一识别每行源数据。仅选择每行的唯一字段或字段组合,而且如果您不确定,请与 SQL Server 数据库管理员核实。

当完成链接操作时,您可在导航窗格中查看新的链接表。

应用最新的 SQL Server 对象结构。

当您打开链接表或者源对象时,即可看到最新的数据。然而,如果结构更改是对 SQL Server 对象执行的,您将需要更新链接表以查看这些更改。

  1. 在导航窗格中右键单击表,然后在快捷菜单上单击“链接表管理器”。

  2. 选中想更新的每个链接表旁边的复选框,或单击“全选”以选择所有链接表。

  3. 单击“确定”>“关闭”。

注意: 因为 Access 数据类型与 SQL Server 数据类型不同,Access 可将每一列链接至恰当的数据类型。您仅可在 Access 中查看而不能更改分配的数据类型。

有关详细信息,请参阅共享 Access 桌面数据库的方式

返回页首

如果部门或工作组使用 Microsoft SQL Server 存储数据,你可能需要在 Access 中处理一些 SQL Server 数据。

可通过导入或链接这两种方式之一将数据从 SQL Server 对象(表或视图)引入 Access。两种流程的差异如下:

  • 导入数据时,Access 创建 SQL Server 数据的副本,并且对 Access 数据库中数据的任何后续更改不会反映在 SQL Server 数据库中。同样,在 SQL Server 表或视图中所作的任何后续更改不会反映在 Access 中。

  • 链接到 SQL Server 数据时,直接连接到源数据,因此在 Access 中对数据进行的任何后续更改将反映在 SQL Server 中,反义亦然。

本文介绍如何导入或链接 SQL Server 数据。

确定选用导入方式还是链接方式

适合导入的情况

通常,将 SQL Server 数据导入 Access 数据的原因如下:

  • 因不再需要数据位于 SQL Server 数据库中而将 SQL Server 数据永久移动到 Access 数据库。将数据导入 Access​​ 后,可从 SQL Server 数据库删除数据。

  • 你的部门或工作组使用 Access,但偶尔要求你从 SQL Server 数据库获取必须合并到某一 Access 数据库的其他数据。

由于导入 SQL Server 数据会在 Access 数据库中创建数据副本,因此在导入过程中需要指定要复制的表或视图。

适合链接的情况

通常,链接 SQL Server 数据的原因如下:

  • 直接连接到源数据,以便可在 SQL Server 数据库和 Access 数据库中查看和编辑最新信息。

  • SQL Server 数据库包含许多大型表,无法将其全部导入单个 .accdb 文件中。Access 数据库的最大大小为 2GB,减去系统对象所需的空间。

  • 如果希望从 SQL Server 基于数据运行查询和生成报表而不创建数据副本,请考虑使用链接到 SQL Server 这种方式。

  • 你的部门或工作组将 Access 用于报告和查询,将 SQL Server 用于数据存储。各个团队可创建 SQL Server 表和视图,用于集中存储;但此数据通常必须放入桌面程序,以便聚合和报告。链接是适合的选择,因为通过这种方式,SQL Server 数据库用户和 Access 数据库用户皆可添加和更新数据,并可始终查看和处理最新数据。

  • 你是最近才开始使用 SQL Server 的 Access​​ 用户。你将多个数据库迁移到 SQL Server,这些数据库中大多数表为链接表。从现在开始,你将在 SQL Server 中创建表和视图(而不是创建 Access​​ 表),然后从 Access 数据库链接到它们。

  • 希望继续在 SQL Server 中存储数据,还希望在 Access​​ 内处理最新数据,以便运行查询以及打印在 Access 中设计的报表。

返回页首

从 SQL Server 导入数据

准备导入

导入操作期间,Access 会创建一个表,然后将数据从 SQL Server 数据库复制到该表。导入操作结束时,可选择将导入操作的详细信息保存为规范。

注意: 导入规范有助于将来重复导入操作,而无需每次逐步执行“导入向导”。

  1. 找到包含要导入的数据的 SQL Server 数据库。联系数据库管理员获取连接信息。

  2. 确定要导入的表或视图。单个导入操作中可导入多个对象。

  3. 检查源数据,注意以下事项:

    • Access 不支持一张表中超过 255 个字段,因此 Access 只导入前 255 列。

    • Access 数据库的最大大小为 2GB,减去系统对象所需的空间。如果 SQL Server 数据库包含许多大型表格,可能无法将其全部导入一个 .accdb 文件中。该情况下,可改为考虑将数据链接到 Access 数据库。

    • Access 不会在导入操作结束时自动在相关表之间创建关系。必须使用“关系”窗口中的选项,在各个新表和现有表之间手动创建关系。显示“关系”窗口的方式:

      • 单击“文件”选项卡,然后在“信息”选项卡上,单击“关系”。

  4. 确定要将 SQL Server 数据导入到的 Access 数据库。

    确保具有将数据添加到 Access 数据库所需的必要权限。如果不希望将数据存储于任何现有数据库中,请单击“文件”,然后单击“新建”选项卡上的“空白数据库”,创建一个空白数据库。

  5. 检查 Access 数据库中的表格(如果存在)。

    导入操作会创建一个与 SQL Server 对象同名的表。如果该名称已经使用,则 Access 在新表名后附加“1”,例如,“联系人1”。(如果“联系人1”也已被占用,则 Access 将创建“联系人 2”,依此类推。)

    注意: Access 在导入操作过程中从不覆盖数据库中的表,且你不能向现有表追加 SQL Server 数据。

导入数据

  1. 打开目标数据库。

    在“外部数据”选项卡上的“导入并链接”组中,单击“ODBC 数据库”。

  2. 单击“将源数据导入当前数据库的新表中”,然后单击“确定”。

  3. 在“选择数据源”对话框中,如果要使用的 .dsn 文件已经存在,请在列表中单击该文件。

    需要创建新的 .dsn 文件

    注意: 此过程中的步骤可能略有不同,具体取决于计算机上安装的软件。

    1. 单击“新建”创建新的数据源名称 (DSN)。

      “创建新数据源向导”随即启动。

    2. 在向导的驱动程序列表中选择“SQL Server”,然后单击“下一步”。

    3. 键入 .dsn 文件的名称,或单击“浏览”,将此文件保存到其他位置。

      注意: 必须具有该文件夹的写入权限才能保存 .dsn 文件。

    4. 单击“下一步”,查看摘要信息,然后单击“完成”结束向导。

      对 SQL Server 创建新的数据源”对话框随即出现。

    5. 在“描述”框中,键入数据源的描述。此为可选步骤。

    6. 在“您要连接哪一个 SQL Server”下的“服务器”框中,键入或选择要连接到的 SQL Server 的名称,然后单击“下一步”继续。

    7. 可能需要 SQL Server 数据库管理员提供一些信息,例如是要使用 Microsoft Windows NT 身份验证还是 SQL Server 身份验证。单击“下一步”继续。

    8. 如果希望连接特定数据库,确保选中“更改默认的数据库为”复选框。选择要使用的数据库,然后单击“下一步”。

    9. 单击“完成”。

    10. 查看摘要信息,然后单击“测试数据源”。

    11. 查看测试结果,然后单击“确定”关闭对话框。

      如果测试成功,再次单击“确定”,或者单击“取消”更改设置。

  4. 单击“确定”关闭“选择数据源”对话框。

    Access 随即显示“导入对象”对话框。

  5. 在“”下,单击要导入的每个表或视图,然后单击“确定”。

  6. 如果出现“选择唯一的记录标识符”对话框,这意味着 Access 无法确定哪个字段或哪些字段可唯一识别特定对象的每个行。该情况下,请选择每行的唯一字段或字段组合,然后单击“确定”。如不确定,请与 SQL Server 数据库管理员核实。

    Access 随即导入数据。如果计划以后重复导入操作,请将导入步骤保存为导入规格,以便以后轻松重新运行相同的导入步骤。需要计算机上安装的 Microsoft Office Outlook 创建一个任务。

  7. 在“获取外部数据源 - ODBC 数据库”对话框中,单击“保存导入步骤”下的“关闭”。Access 结束导入操作并在“导航窗格”中显示新的表或视图。

若要将导入保存为任务以供重复使用,请继续阅读下一部分。

返回页首

保存和使用导入设置

注意: 必须安装有 Microsoft Office Outlook 才能创建任务。

  1. 在“获取外部数据 - ODBC 数据库”对话框的“保存导入步骤”下,勾选“保存导入步骤”复选框。随即出现一组其他控件。

  2. 在“另存为”框中,键入导入规范的名称。

  3. 在“描述”框中键入描述。此为可选步骤。

  4. 若要按固定时间间隔(如每周一次或每月一次)执行该操作,请选中“创建 Outlook 任务”复选框。这样会创建一个 Microsoft Outlook 2010 任务,可以通过该任务运行规范。

  5. 单击“保存导入”。

如果未安装 Outlook,单击“保存导入”时 Access 会显示错误消息。

注意: 如果 Outlook 2010 未正确配置,将启动 Microsoft Outlook 2010 启动向导。请按照向导中的说明配置 Outlook。

或者可以创建 Outlook 任务。若要定期或重复运行导入操作,在 Outlook​​ 中创建任务非常有用。但是,如果不创建任务,Access 仍然会保存规范。

创建 Outlook 任务

如果选中了“创建 Outlook 任务”复选框,Access 会启动 Office Outlook 2010 并显示新的任务。请按照如下步骤配置任务:

注意: 如果没有安装 Outlook,Access 就会显示一条错误消息。如果 Outlook 配置不正确,“Outlook 配置向导”就会启动。请按向导中的说明配置 Outlook。

  1. 检查并修改任务设置,如“开始日期”、“截止日期”和“提醒”。

    若要使导入任务成为重复事件,请单击“重复周期​​”并填写相应信息。

  2. 单击“保存并关闭”

运行保存的任务

  1. 在 Outlook 导航窗格中,单击“任务”,然后双击要运行的任务。

  2. 在“任务”选项卡的“Microsoft Access”组中,单击“运行导入”。

  3. 切换回 Access 窗口,然后按 F5 刷新导航窗格。

  4. 双击已导入的表,将其在“数据表”视图中打开。

  5. 确保导入所有字段和记录,并确保无任何错误。

  6. 在“导航窗格”中,右键单击导入的表,然后单击快捷菜单上的“设计视图”。检查字段数据类型和其他字段属性。

返回页首

链接到 SQL Server 数据

由于数据存储在表中,链接到 SQL Server 数据库中的表或视图时,Access 将创建一个反映源对象结构和内容的新表(通常称为链接表)。可在 SQL Server 中或在 Access​​ 的“数据表”视图或“窗体”视图中更改数据。对一个位置中的数据所作的更改会反映在另一个位置中。但是,如要进行结构更改,例如删除或更改列,则必须从 SQL Server 数据库或从连接到该数据库的 Access 项目进行删除或更改。在 Access 中操作时,无法添加、删除或更改链接表中的字段。

准备链接

  1. 查找包含要链接的数据的 SQL Server 数据库。联系数据库管理员获取连接信息。

  2. 确定要链接到的表或视图。可在一个链接操作中链接到多个对象。

  3. 检查源数据,注意以下事项:

    • Access 不支持一个表中超过 255 个字段,因此,链接表将只包含所链接到的对象的前 255 个字段。

    • SQL Server 对象中的只读列在 Access 依然为只读。

    • 不能添加、删除或修改 Access 链接表中的列。

  4. 确定要在其中创建链接表的 Access 数据库。确保具有将数据添加到数据库的必要权限。如果不需要在任何现有的数据库中存储数据,请单击“文件”选项卡,然后单击“新建”选项卡上的“空白数据库”,创建一个新的空白数据库。

  5. 检查 Access 数据库中的表。链接到 SQL Server 表或视图时,Access 将创建与源对象同名的链接表。如果该名称已在使用中,Access 会在新链接表的名称后附加 “1”,例如“联系人1”。(如果“联系人1”也已经被占用,Access 将创建“联系人2”,以此类推。)

  6. 若要链接到数据,请打开目标数据库。

  7. 在“外部数据”选项卡上的“导入并链接”组中,单击“ODBC 数据库”。

  8. 单击“通过创建链接表来链接到数据源”,然后单击“确定”。

  9. 在“选择数据源”对话框中,单击要使用的 .dsn 文件,或者单击“新建”创建新的数据源名称 (DSN)。

  10. 在“选择数据源”对话框中,如果要使用的 .dsn 文件已经存在,请在列表中单击该文件。

    需要创建新的 .dsn 文件

    注意: 此过程中的步骤可能略有不同,具体取决于计算机上安装的软件。

    1. 单击“新建”创建新的数据源名称 (DSN)。

      “创建新数据源向导”随即启动。

    2. 在向导的驱动程序列表中选择“SQL Server”,然后单击“下一步”。

    3. 键入 .dsn 文件的名称,或单击“浏览”,将此文件保存到其他位置。

      注意: 必须具有该文件夹的写入权限才能保存 .dsn 文件。

    4. 单击“下一步”,查看摘要信息,然后单击“完成”结束“创建新数据源”向导。

      “对 SQL Server 创建新的数据源”向导将启动。

    5. 在该向导中的“描述”框中,键入数据源的描述。此为可选步骤。

    6. 在“您要连接哪一个 SQL Server”下的“服务器”框中,键入或选择要连接到的 SQL Server 计算机的名称,然后单击“下一步”继续。

    7. 在向导的此页上,可能需要 SQL Server 数据库管理员提供一些信息,例如是要使用 Windows NT 身份验证还是 SQL Server 身份验证。单击“下一步”继续。

    8. 在向导下一页上,可能需要从 SQL Server 数据库管理员处获取更多信息。若要连接到特定数据库,请确保选中“更改默认的数据库为”复选框,选择要使用的 SQL Server 数据库,然后单击“下一步”。

    9. 单击“完成”。查看摘要信息,然后单击“测试数据源”。

    10. 查看测试结果,然后单击“确定”关闭“SQL Server ODBC 数据源测试”对话框。

      如果测试成功,请再次单击“确定”完成该向导,或者单击“取消”返回到向导并更改设置。

  11. 单击“确定”。

    Access 随即显示“链接表”对话框。

  12. 在“”下,单击希望链接的每个表或视图,然后单击“确定”。

    1. 如果出现“选择唯一的记录标识符”对话框,这意味着 Access 无法确定哪个字段或哪些字段可唯一识别每行源数据。该情况下,请选择每行的唯一字段或字段组合,然后单击“确定”。如不确定,请与 SQL Server 数据库管理员核实。

Access 完成链接操作并在“导航窗格”中显示新的链接表。

重要: 每次打开链接表或源对象时,都可以看到其中显示的最新数据。但是,对 SQL Server 对象进行的结构更改不会自动反映在链接表中。

通过应用最新 SQL Server 对象结构更新链接表

  1. 在导航窗格中右键单击表,然后在快捷菜单上单击“链接表管理器”。

  2. 选中想更新的每个链接表旁边的复选框,或单击“全选”以选择所有链接表。

  3. 单击“确定”。

    如果更新成功,Access 会显示一条表明成功的消息。否则,Access 会显示一条表明不成功的消息。

  4. 单击“关闭”关闭链接表管理器。

返回页首

Access 如何识别 SQL Server 数据类型

因为 Access 数据类型不同于 SQL Server 数据类型,所以 Access 必须决定最适合的 Access 数据类型,以将其用于导入或链接到的每个 SQL Server 表或视图的每列。例如,SQL Server 中数据类型“bit”的列导入或链接到 Access 中的数据类型“是/否”。再例如,SQL Server 中“nvarchar(255)”(或更小)数据类型的列被导入或链接到“Text”数据类型,但是“nvarchar(256)”(或更大)数据类型的列被作为 Access 中的“备忘录”字段导入。完成导入或链接操作后,可以在“设计”视图中打开表,确认 Access 向字段分配的数据类型。可以更改导入的表中字段的数据类型。但是,无法在链接表中更改字段数据类型,只能在 SQL Server 数据库本身中或在连接到该数据库的 Access 项目中进行更改。

下表列出了主要的 SQL Server 数据类型。第二列和第三列显示 Access 如何解释每个类型。

SQL Server 数据类型

Access 数据类型

Access 字段大小

bigint

文本

255

binary( field size )

二进制

与 SQL Server 字段大小相同

bit

是否

char( field size ),其中字段大小小于或等于 255

文本

与 SQL Server 字段大小相同

char( field size ),其中字段大小大于 255

备忘录

datetime

日期/时间

decimal( precision , scale )

数字

Decimal(Access 精度小数位数属性与 SQL Server 精度和小数位数一致。)

float

数字

Double

image

OLE 对象

int

数字

长整型

money

货币​

nchar( field size ),其中字段大小小于或等于 255

文本

与 SQL Server 字段大小相同

nchar( field size ),其中字段大小大于 255

备忘录

ntext

备忘录

numeric( precision , scale )

数字

Decimal(Access 精度小数位数属性与 SQL Server 精度和小数位数一致。)

nvarchar( field size ),其中字段大小小于或等于 255

文本

与 SQL Server 字段大小相同

nvarchar( field size ),其中字段大小大于 255

备忘录

nvarchar(MAX)

备忘录

real

数字

Single

smalldatetime

日期/时间

smallint

数字

整型

smallmoney

货币​

sql_variant

文本

255

text

备忘录

timestamp

二进制

8

tinyint

数字

字节

uniqueidentifier

数字

复制 ID

varbinary

二进制

与 SQL Server 字段大小相同

varbinary(MAX)

OLE 对象

varchar( field size ),其中字段大小小于或等于 255

文本

与 SQL Server 字段大小相同

varchar( field size),其中字段大小大于 255

备忘录

varchar(MAX)

备忘录

xml

备忘录

返回页首

如果部门或工作组使用 Microsoft SQL Server 存储数据,你可能会遇到需要在 Microsoft Office Access 2007 中处理一些 SQL Server 数据的情况。

如果对 SQL Server 不熟悉且希望了解更多信息,请访问 Microsoft SQL Server 主页。请访问本文“另请参阅”部分中的链接。

可通过导入或链接这两种方式之一将数据从 SQL Server 对象(表或视图)引入 Office Access 2007。如果导入数据,则将数据复制到 Access 数据库中。在 Access 中对数据所作的后续更改不会反映在 SQL Server 数据库中。同样,在 SQL Server 表或视图中所作的任何后续更改不会反映在 Access 表中。相比之下,如果链接到 SQL Server 数据,则数据保留在 SQL Server 计算机上,而 Access 连接到该数据。在 Access 中对数据所作的任何后续更改会反映在 SQL Server 数据中,并且在 SQL Server 数据库中所作的任何更改会反映在 Access 中的链接表中。

本文介绍了将 SQL Server 数据导入和链接到 Access 2007 的步骤。

导入 SQL Server 数据

导入 SQL Server 数据会在 Access 数据库中创建数据副本。导入操作期间,指定要复制的表或视图。

导入操作会在 Access 中创建一个表,然后将数据从 SQL Server 数据库复制到 Access表。有关表和数据库的构成方式的详细信息,请查看“另请参阅”部分中的相关链接。

导入操作结束时,可以选择将导入操作的详细信息另存为规范。导入规范有助于在之后重复导入操作,而无需每次都逐步执行“导入向导”。

需要将 SQL Server 表导入 Access 的常见情况

通常,将 SQL Server 数据导入 Access 数据库的原因如下:

  • 因不再需要数据位于 SQL Server 数据库中而希望将 SQL Server 数据永久移动到 Access 数据库。可将数据导入 Access,然后将其从 SQL Server 数据库删除。

  • 你的部门或工作组使用 Access,但偶尔要求你从 SQL Server 数据库获取必须合并到某一 Access 数据库的其他数据。

以下步骤介绍如何将 SQL Server 数据导入 Access 数据库。

准备执行导入操作

  1. 找到包含要复制的数据的 SQL Server 数据库。联系数据库管理员获取连接信息。

  2. 确定要复制到 Access 数据库的表或视图。单个导入操作中可导入多个对象。

  3. 检查源数据,注意以下事项:

    • Access 不支持一张表中超过 255 个字段,因此 Access 只导入前 255 列。

    • Access 数据库的最大大小为 2GB,减去系统对象所需的空间。如果 SQL Server 数据库包含许多大型表格,可能无法将其全部导入一个 .accdb 文件中。该情况下,可改为考虑将数据链接到 Access 数据库。

    • Access 不会在导入操作结束时自动在相关表之间创建关系。必须使用“关系”选项卡上的选项,在各个新表和现有表之间手动创建关系。“关系”选项卡显示方法:
      在“数据库工具”选项卡的“显示/隐藏”组中,单击“关系按钮图像

  4. 确定要将 SQL Server 数据导入到的 Access 数据库。

    确保具有将数据添加到 Access 数据库所需的必要权限。如不希望将数据存储于任何现有数据库中,请单击“Microsoft Office 按钮Office 按钮图像 ,然后单击“新建”,创建一个空白数据库。

  5. 检查 Access 数据库中的表格(如果存在)。

    导入操作会创建一个与 SQL Server 对象同名的表。如果该名称已经使用,则 Access 在新表名后附加“1”,例如,“联系人1”。(如果“联系人1”也已被占用,则 Access 将创建“联系人 2”,依此类推。)

    注意: Access 在导入操作过程中从不覆盖数据库中的表,且你不能向现有表追加 SQL Server 数据。

导入数据

  1. 打开目标数据库。

    在“外部数据”选项卡的“导入”组中,单击“更多”。

  2. 单击“ODBC 数据库按钮图像

  3. 单击“将源数据导入当前数据库的新表中”,然后单击“确定”。

  4. 在“选择数据源”对话框中,如果要使用的 .dsn 文件已经存在,请在列表中单击该文件。

    需要创建新的 .dsn 文件

    注意: 此过程中的步骤可能略有不同,具体取决于计算机上安装的软件。

    1. 单击“新建”创建新的数据源名称 (DSN)。
      “创建新数据源向导”随即启动。

    2. 在向导的驱动程序列表中选择“SQL Server”,然后单击“下一步”。

    3. 键入 .dsn 文件的名称,或单击“浏览”,将此文件保存到其他位置。

      注意: 必须具有该文件夹的写入权限才能保存 .dsn 文件。

    4. 单击“下一步”,查看摘要信息,然后单击“完成”结束向导。
      “对 SQL Server 创建新的数据源”向导将启动。

    5. 在该向导中的“描述”框中,键入数据源的描述。此为可选步骤。

    6. 在“您要连接哪一个 SQL Server”下的“服务器”框中,键入或选择要连接到的 SQL Server 的名称,然后单击“下一步”继续。

    7. 在向导的此页上,可能需要 SQL Server 数据库管理员提供一些信息,例如决定是要使用 Microsoft Windows NT 身份验证还是 SQL Server 身份验证。单击“下一步”继续。

    8. 在向导下一页上,可能需要从 SQL Server 数据库管理员处获取更多信息,才能继续操作。如果希望连接特定数据库,确保选中“更改默认的数据库为”复选框。选择要使用的数据库,然后单击“下一步”。

    9. 单击“完成”。查看摘要信息,然后单击“测试数据源”。

    10. 查看测试结果,然后单击“确定”关闭“SQL Server ODBC 数据源测试”对话框。

      如果测试成功,请再次单击“确定”完成该向导,或者单击“取消”返回到向导并更改设置。

  5. 单击“确定”关闭“选择数据源”对话框。

    Access 随即显示“导入对象”对话框。

  6. 在“”下,单击要导入的每个表或视图,然后单击“确定”。

  7. 如果出现“选择唯一的记录标识符”对话框,这意味着 Access 无法确定哪个字段或哪些字段可唯一识别特定对象的每个行。该情况下,请选择每行的唯一字段或字段组合,然后单击“确定”。如不确定,请与 SQL Server 数据库管理员核实。

Access 随即导入数据。如果计划以后重复导入操作,请将导入步骤保存为导入规格,以便以后轻松重新运行相同的导入步骤。转至本文下一部分完成该任务。如果不希望保存导入规范的详细信息,请在“获取外部数据 - ODBC 数据库”对话框中,单击“保存导入步骤”下的“关闭”。Access 完成导入操作并在“导航窗格”中显示新的表或视图。

将导入步骤保存为规范

  1. 在“获取外部数据 - ODBC 数据库”对话框的“保存导入步骤”下,勾选“保存导入步骤”复选框。

    随即出现一组其他控件。

  2. 在“另存为”框中,键入导入规范的名称。

  3. 在“描述”框中键入描述。此为可选步骤。

  4. 如果您要按固定时间间隔(如每周一次或每月一次)执行该操作,请选中“创建 Outlook 任务”复选框。这样将会创建一个 Microsoft Office Outlook 2007 任务,您就可以通过该任务运行该规格。

  5. 单击“保存导入”

配置 Outlook 任务

如果在前面的过程中选中了“创建 Outlook 任务”复选框,Access 将启动 Office Outlook 2007 并显示一项新任务。按照如下步骤配置该任务。

注意: 如果没有安装 Outlook,Access 就会显示一条错误消息。如果 Outlook 配置不正确,“Outlook 配置向导”就会启动。请按向导中的说明配置 Outlook。

  1. 在 Outlook 任务窗口中,检查并修改任务设置,如“截止日期”和“提醒”。

    若要将该任务设置为重复,则单击“重复周期​​”,然后填写相应信息。

    此图显示包含一些典型设置的任务计划程序。

    Outlook 任务计划程序

    有关计划 Outlook 任务的信息,请参阅安排导入或导出操作一文。

  2. 完成 Outlook 中的任务设置时,在“任务”选项卡上的“操作”组中,单击“保存并关闭”。

运行保存的任务

  1. 在 Outlook 导航窗格中,单击“任务”,然后双击要运行的任务。

  2. 在“任务”选项卡的“Microsoft Office Access”组中,单击“运行导入按钮图像

  3. 切换回 Access 窗口,然后按 F5 刷新导航窗格。

  4. 双击已导入的表,将其在“数据表”视图中打开。

  5. 确保导入所有字段和记录,并确保无任何错误。

  6. 在“导航窗格”中,右键单击导入的表,然后单击快捷菜单上的“设计视图”。检查字段数据类型和其他字段属性。

返回页首

链接到 SQL Server 数据

通过链接,无需导入该信息即可连接至数据,从而可在 SQL Server 数据库和 Access 数据库中查看和编辑最新数据,且无需在 Access 中创建和保留数据副本。如果不希望将 SQL Server 数据复制到 Access 数据库,但仍希望基于该数据运行查询并生成报表,则应采用链接方式而不是导入方式。

链接 SQL Server 数据库中的表或视图时,Access 将创建一个反映源对象结构和内容的新表(通常称为链接表)。可在 SQL Server 中或在 Access​​ 的“数据表”视图或“窗体”视图下更改数据。对一个位置中的数据所作的更改会反映在另一个位置。但是,如要进行结构更改,例如删除或更改列,则必须从 SQL Server 数据库内或从连接到该数据库的 Access 项目内执行相应操作。在 Access 中处理时无法添加、删除或修改链接表中的字段。

如果 SQL Server 数据库包含大量数据,应当选择链接方式而不是导入方式,因为 Access 数据库最大大小为 2GB(减去系统对象所需的空间)。导入许多大型表或视图可能导致超出该限制,而链接到数据不会增加 Access 数据库太多大小。

链接到 SQL Server 数据的常见情况

通常,从 Access 数据库链接到 SQL Server 表或视图的原因如下:

  • 你的部门或工作组将 Access 用于报告和查询,将 SQL Server 用于数据存储。各个团队可创建 SQL Server 表和视图,用于集中存储;但此数据通常必须放入桌面程序,以便聚合和报告。链接是适合的选择,因为通过这种方式,SQL Server 数据库用户和 Access 数据库用户皆可添加和更新数据,并可始终查看和处理最新数据。

  • 你是最近才开始使用 SQL Server 的 Access​​ 用户。你将多个数据库迁移到 SQL Server,这些数据库中大多数表为链接表。从现在开始,你将在 SQL Server 中创建表和视图(而不是创建 Access​​ 表),然后从 Access 数据库链接到它们。

  • 希望继续在 SQL Server 中存储数据,还希望在 Access​​ 内处理最新数据,以便运行查询以及打印在 Access 中设计的报表。

准备链接到 SQL Server 表

  1. 查找包含要链接的数据的 SQL Server 数据库。联系数据库管理员获取连接信息。

  2. 确定要链接到的表或视图。可在一个链接操作中链接到多个对象。

  3. 检查源数据,注意以下事项:

    • Access 不支持一个表中超过 255 个字段,因此,链接表将只包含所链接到的对象的前 255 个字段。

    • SQL Server 对象中的只读列在 Access 依然为只读。

    • 不能添加、删除或修改 Access 链接表中的列。

  4. 确定要在其中创建链接表的 Access 数据库。确保具有将数据添加到该数据库的必要权限。如果不想在任何现有的数据库中存储数据,请使用以下命令创建一个新的空白数据库:

    单击“Microsoft Office 按钮Office 按钮图像 ,然后单击“新建”。

  5. 检查 Access 数据库中的表。链接到 SQL Server 表或视图时,Access 将创建与源对象同名的链接表。如果该名称已在使用中,Access 会在新链接表的名称后附加 “1”,例如“联系人1”。(如果“联系人1”也已经被占用,Access 将创建“联系人2”,以此类推。)

链接到数据

  1. 打开目标数据库。

  2. 在“外部数据”选项卡的“导入”组中,单击“更多”。

  3. 单击“ODBC 数据库”。

  4. 单击“通过创建链接表来链接到数据源”,然后单击“确定”。

  5. 在“选择数据源”对话框中,单击要使用的 .dsn 文件,或者单击“新建”创建新的数据源名称 (DSN)。

  6. 在“选择数据源”对话框中,如果要使用的 .dsn 文件已经存在,请在列表中单击该文件。

    需要创建新的 .dsn 文件

    注意: 此过程中的步骤可能略有不同,具体取决于计算机上安装的软件。

    1. 单击“新建”创建新的数据源名称 (DSN)。
      “创建新数据源向导”随即启动。

    2. 在向导的驱动程序列表中选择“SQL Server”,然后单击“下一步”。

    3. 键入 .dsn 文件的名称,或单击“浏览”,将此文件保存到其他位置。

      注意: 必须具有该文件夹的写入权限才能保存 .dsn 文件。

    4. 单击“下一步”,查看摘要信息,然后单击“完成”结束“创建新数据源”向导。
      “对 SQL Server 创建新的数据源”向导将启动。

    5. 在该向导中的“描述”框中,键入数据源的描述。此为可选步骤。

    6. 在“您要连接哪一个 SQL Server”下的“服务器”框中,键入或选择要连接到的 SQL Server 计算机的名称,然后单击“下一步”继续。

    7. 在向导的此页上,可能需要 SQL Server 数据库管理员提供一些信息,例如是要使用 Windows NT 身份验证还是 SQL Server 身份验证。单击“下一步”继续。

    8. 在向导下一页上,可能需要从 SQL Server 数据库管理员处获取更多信息。若要连接到特定数据库,请确保选中“更改默认的数据库为”复选框,选择要使用的 SQL Server 数据库,然后单击“下一步”。

    9. 单击“完成”。查看摘要信息,然后单击“测试数据源”。

    10. 查看测试结果,然后单击“确定”关闭“SQL Server ODBC 数据源测试”对话框。

      如果测试成功,请再次单击“确定”完成该向导,或者单击“取消”返回到向导并更改设置。

  7. 单击“确定”。
    Access 随即显示“链接表”对话框。

  8. 在“”下,单击希望链接的每个表或视图,然后单击“确定”。

  9. 如果出现“选择唯一的记录标识符”对话框,这意味着 Access 无法确定哪个字段或哪些字段可唯一识别每行源数据。该情况下,请选择每行的唯一字段或字段组合,然后单击“确定”。如不确定,请与 SQL Server 数据库管理员核实。

Access 完成链接操作并在“导航窗格”中显示新的链接表。

重要: 每次打开链接表或源对象时,都可以看到其中显示的最新数据。但是,对 SQL Server 对象进行的结构更改不会自动反映在链接表中。


通过应用最新 SQL Server 对象结构更新链接表:

  1. 在导航窗格中右键单击表,然后在快捷菜单上单击“链接表管理器”。

  2. 选中想更新的每个链接表旁边的复选框,或单击“全选”以选择所有链接表。

  3. 单击“确定”。

    如果更新成功,Access 会显示一条表明成功的消息。否则,Access 会显示一条错误消息。

  4. 单击“关闭”关闭链接表管理器。

返回页首

了解 Access 如何解释 SQL Server 数据类型

因为 Access 数据类型不同于 SQL Server 数据类型,所以 Access 必须决定最适合的 Access 数据类型,以将其用于导入或链接到的每个 SQL Server 表或视图的每列。例如,SQL Server 中数据类型“bit”的列导入或链接到 Access 中的数据类型“是/否”。再例如,SQL Server 中“nvarchar(255)”(或更小)数据类型的列导入或链接到 Access 中的“文本”数据类型,而“nvarchar(256)”(或更大)数据类型的列则作为 Access 中的“备忘录”字段导入。完成导入或链接操作后,应在“设计”视图中打开表,确认 Access 向字段导入的数据类型。可在导入的表中更改字段数据类型;但是,无法在链接表中更改字段数据类型,只能在 SQL Server 数据库中或在连接到该数据库的 Access 项目中进行更改。

下表列出了主要的 SQL Server 数据类型。第二列和第三列显示 Access 如何解释每个类型。

SQL Server 数据类型

Access 数据类型

Access 字段大小

bigint

文本

255

binary( field size )

二进制

与 SQL Server 字段大小相同

bit

是否

char( field size ),其中字段大小小于或等于 255

文本

与 SQL Server 字段大小相同

char( field size ),其中字段大小大于 255

备忘录

datetime

日期/时间

decimal( precision , scale )

数字

Decimal(Access 精度小数位数属性与 SQL Server 精度和小数位数一致。)

float

数字

Double

image

OLE 对象

int

数字

长整型

money

货币​

nchar ( field size ),其中字段大小小于或等于 255

文本

与 SQL Server 字段大小相同

nchar ( field size ),其中字段大小大于 255

备忘录

ntext

备忘录

numeric( precision , scale )

数字

Decimal(Access 精度小数位数属性与 SQL Server 精度和小数位数一致。)

nvarchar ( field size ),其中字段大小小于或等于 255

文本

与 SQL Server 字段大小相同

nvarchar ( field size ),其中字段大小大于 255

备忘录

nvarchar (MAX)

备忘录

real

数字

Single

smalldatetime

日期/时间

smallint

数字

整型

smallmoney

货币​

sql_variant

文本

255

text

备忘录

timestamp

二进制

8

tinyint

数字

字节

uniqueidentifier

数字

复制 ID

varbinary

二进制

与 SQL Server 字段大小相同

varbinary (MAX)

OLE 对象

varchar ( field size ),其中字段大小小于或等于 255

文本

与 SQL Server 字段大小相同

varchar ( field size),其中字段大小大于 255

备忘录

varchar (MAX)

备忘录

xml

备忘录

返回页首

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

此信息是否有帮助?

谢谢您的反馈!

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

×