导入 Access 数据或将其链接到 SQL Server 数据
如果部门或工作组使用 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 数据库的最大大小为 2 GB 减去系统对象所需的空间。 |
✍ | 如果要基于 SQL Server 中的数据运行查询和生成报表,而不想生成数据的副本,那么请考虑链接到 SQL Server。 |
✍ | 部门或工作组使用 Access 进行报告和查询,并使用 SQL Server 存储数据。各个工作组可以创建 SQL Server 表和视图以集中存储,但通常此数据必须导入到桌面程序进行汇总和报告。链接是合适的选择,因为它允许 SQL Server 数据库和 Access 数据库的用户添加及更新数据,以及始终查看和使用最新的数据。 |
✍ | 您是一位 Access 用户,最近开始使用 SQL Server。您将几个数据库迁移到了 SQL Server,而这些数据库中的大多数表都是链接表。从现在起,您将在 SQL Server 中创建表和视图,然后从 Access 数据库链接到这些表和视图,而不是创建 Access 表。 |
✍ | 您想继续在 SQL Server 中存储数据,但您还想在 Access 中使用最新的数据,以便运行查询和打印您在 Access 中设计的报表。 |
导入操作过程中,Access 创建一个表,然后将 SQL Server 数据库中的数据复制到该表中。导入操作结束时,可以选择将该次导入操作的详细信息另存为规格。
注释 导入规格可帮助您日后重复该导入操作,而不必每次都逐步完成“导入向导”。
1. | 找到包含要导入的数据的 SQL Server 数据库。如需连接信息,可与该数据库的管理员联系。 |
2. | 确定要导入的表或视图。可以在一次导入操作中导入多个对象。 |
3. | 查看源数据,并谨记以下注意事项: |
✍ | Access 在一个表中最多支持 255 个字段,因此,Access 仅导入前面 255 列。 |
✍ | Access 数据库的最大大小是 2 GB,并要减去系统对象所需的空间。如果 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 文件已存在,则在列表中单击此文件。 |
注释 此过程中的步骤对您而言可能略有不同,具体取决于您的计算机上安装的软件。
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 任务”复选框,Access 会启动 Office Outlook 2010,并显示一个新任务。按照以下步骤配置该任务:
注释 如果没有安装 Outlook,Access 就会显示一条错误消息。如果 Outlook 配置不正确,将会启动“Outlook 配置向导”。请按向导中的说明配置 Outlook。
1. | 查看并修改任务设置,例如“开始日期”、“截止日期”和“提醒”。 |
若要使导入任务重复发生,单击“重复周期”并填写相应信息。
2. | 单击“保存并关闭”。 |
1. | 在 Outlook 的“导航窗格”中,单击“任务”,然后双击想运行的任务。 |
2. | 在“任务”选项卡上的“Microsoft Access”组中,单击“运行导入”。 |
3. | 切换回 Access 窗口,然后按 F5 以刷新“导航窗格”。 |
4. | 双击导入的表以在“数据表”视图中打开它。 |
5. | 确保所有字段和记录均已导入,并且没有任何错误。 |
6. | 在“导航窗格”中右键单击导入的表,然后在快捷菜单上单击“设计视图”。查看字段数据类型和其他字段属性。 |
由于数据存储在表中,因此,在链接到 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)。 |
“创建新数据源”向导随即启动。
✍ | 在向导中,选择驱动程序列表中的“SQL Server”,然后单击“下一步”。 |
✍ | 键入 .dsn 文件的名称,或单击“浏览”将文件保存到另一个位置。 |
注释 您必须具有该文件夹的写权限才能保存 .dsn 文件。
✍ | 单击“下一步”,查看摘要信息,然后单击“完成”完成“创建新数据源”向导。 |
“创建到 SQL Server 的新数据源”向导随即启动。
✍ | 在向导中,在“说明”框中键入数据源的说明。这一步是可选的。 |
✍ | 在“您想连接到哪个 SQL Server”下,在“服务器”框中键入或选择想连接到的 SQL Server 计算机的名称,然后单击“下一步”继续。 |
✍ | 在向导的这一页上,您可能需要从 SQL Server 数据库管理员处获得信息,例如是使用 Windows NT 身份验证还是使用 SQL Server 身份验证。单击“下一步”继续。 |
✍ | 在向导的下一页上,您可能需要从 SQL Server 数据库管理员处获得更多信息。如果想连接到特定的数据库,请确保选中了“将默认数据库改为”复选框,选择想使用的 SQL Server 数据库,然后单击“下一步”。 |
✍ | 单击“完成”。查看摘要信息,然后单击“测试数据源”。 |
✍ | 查看测试结果,然后单击“确定”以关闭“SQL Server ODBC 数据源测试”对话框。 |
如果测试成功,则再次单击“确定”完成向导,或单击“取消”返回到向导,并更改设置。
11. | 单击“确定”。 |
Access 会显示“链接表”对话框。
12. | 在“表”下,单击想链接到的每个表或视图,然后单击“确定”。 |
✍ | 如果“选择唯一的记录标识符”对话框出现,这表示 Access 无法确定哪个或哪些字段唯一地标识源数据的每一行。在这种情况下,选择对于每一行为唯一的字段或字段组合,然后单击“确定”。如果不确定,请向 SQL Server 数据库管理员查询。 |
Access 完成链接操作,并在“导航窗格”中显示新的链接表。
要点 每次您打开链接表或源对象时,您会看到其中显示了最新的数据。但是,对 SQL Server 对象所做的结构更改不会自动反映在链接表中。
1. | 在“导航窗格”中右键单击表,然后在快捷菜单上单击“链接表管理器”。 |
2. | 选中想更新的每个链接表旁边的复选框,或单击“全选”以选择所有链接表。 |
3. | 单击“确定”。 |
如果更新成功,Access 会显示相应的消息。否则,Access 将显示失败消息。
4. | 单击“关闭”以关闭“链接表管理器”。 |
由于 Access 数据类型不同于 SQL Server 数据类型,因此,Access 必须确定最合适的 Access 数据类型,以用于您导入或链接到的每个 SQL Server 表或视图的每一列。例如,数据类型为 bit 的 SQL Server 列以数据类型是/否导入或链接到 Access。另一个例子是,数据类型为 nvarchar(255)(或更小)的 SQL Server 列以数据类型文本导入或链接,但数据类型为 nvarchar(256)(或更大)的列作为 Access 备注字段导入。完成导入或链接操作后,可在“设计”视图中打开表,并确认 Access 向其字段分配了哪些数据类型。可以在导入的表中更改字段的数据类型。但是,除了在 SQL Server 数据库或在连接到该数据库的 Access 项目中外,不能更改链接表中字段的数据类型。
下表列出了主要的 SQL Server 数据类型。第二和第三列说明了 Access 如何解释各种类型。
SQL Server 数据类型 |
Access 数据类型 |
Access 字段大小 |
bigint |
文本 |
255 |
binary(字段大小) |
二进制 |
字段大小与 SQL Server 相同 |
bit |
是/否 |
|
char(字段大小),其中字段大小 小于或等于 255 |
文本 |
字段大小与 SQL Server 相同 |
char(字段大小),其中字段大小 大于 255 |
备注 |
|
datetime |
日期/时间 |
|
decimal(精度, 数值范围) |
数字 |
小数(Access 精度和数值范围属性匹配 SQL Server 精度和数值范围。) |
float |
数字 |
双精度型 |
image |
OLE 对象 |
|
int |
数字 |
长整型 |
money |
货币 |
|
nchar(字段大小),其中字段大小 小于或等于 255 |
文本 |
字段大小与 SQL Server 相同 |
nchar(字段大小),其中字段大小 大于 255 |
备注 |
|
ntext |
备注 |
|
numeric(精度, 数值范围) |
数字 |
小数(Access 精度和数值范围属性匹配 SQL Server 精度和数值范围。) |
nvarchar(字段大小),其中字段大小 小于或等于 255 |
文本 |
字段大小与 SQL Server 相同 |
nvarchar(字段大小),其中字段大小 大于 255 |
备注 |
|
nvarchar(MAX) |
备注 |
|
real |
数字 |
单精度型 |
smalldatetime |
日期/时间 |
|
smallint |
数字 |
整型 |
smallmoney |
货币 |
|
sql_variant |
文本 |
255 |
text |
备注 |
|
timestamp |
二进制 |
8 |
tinyint |
数字 |
字节 |
uniqueidentifier |
数字 |
同步复制 ID |
varbinary |
二进制 |
字段大小与 SQL Server 相同 |
varbinary(MAX) |
OLE 对象 |
|
varchar(字段大小),其中字段大小 小于或等于 255 |
文本 |
字段大小与 SQL Server 相同 |
varchar(字段大小),其中字段大小 大于 255 |
备注 |
|
varchar(MAX) |
备注 |
|
xml |
备注 |