Applies ToMicrosoft 365 专属 Access Access 2024 Access 2021 Access 2019 Access 2016

可以使用 Access 作为前端应用程序,然后链接到后端服务器(如 SQL Server)中的表。 默认情况下,大多数查询在 Access ACE 数据库引擎中本地运行。 在某些情况下,Access 可以在 SQL Server 上远程运行查询,具体取决于 SQL 语法和其他因素。 有关详细信息,请参阅 重新发现 JET 和 ODBC 白皮书中的“JET 数据库引擎版本 3.0:ODBC 连接”。

不过,通常希望在数据库服务器上显式运行查询。 这样做有助于提高性能:数据库服务器比台式计算机具有更高的处理能力,并且可以通过网络连接返回较小的数据子集。 若要在数据库服务器上运行查询,请使用 传递查询 它是使用 ODBC 连接字符串连接到 SQL Server 的 Transact SQL (TSQL) 语句。 例如,可以传递 SELECT 语句以将数据返回到数据表、窗体、报表或列表控件, (数据操作语言 (DML) 语句) 运行等效的操作查询,调用存储过程,) (数据定义语言 (DDL) 语句执行管理任务。

注意    传递查询的结果为只读。 若要直接编辑数据表或窗体中的数据,请创建指向索引视图的链接表。 有关详细信息,请参阅 创建索引视图

  1. 连接到服务器数据库。

    有关链接到 SQL Server 的详细信息,请参阅 导入或链接到 SQL Server 数据库中的数据链接到或从 Azure SQL Server 数据库导入数据

  2. 选择“创建”>“查询设计”。

  3. 如有必要,请关闭“ 添加表 ”对话框 (在 Access 中 显示表

  4. 选择“ 设计 >直通”。

    Access 会隐藏查询设计网格并显示 SQL 视图

  5. 如果未显示查询属性表,请按 F4 显示它。

  6. 在属性表上,单击“ ODBC Connect Str ”属性框,然后执行下列操作之一:

    若要获取连接字符串,请执行以下操作:

    1. 在导航窗格中,右键单击链接到所需数据源的表,然后选择“ 链接表管理器”。

    2. 在“ 链接表管理器 ”对话框中,选中数据源的复选框,然后选择 “编辑”。

    3. “编辑链接 ”对话框中,复制“ 连接字符串 ”框中的文本。

    1. 选择“ 生成 “生成器”按钮”。

    2. 按照提示创建包含连接字符串信息的 DSN 文件。 有关详细步骤,请参阅 导入或链接到 SQL Server 数据库中的数据链接到 Azure SQL Server 数据库中的数据或从 Azure SQL Server 数据库中导入数据

    创建 DSN 文件连接后,ODBC 连接字符串内部存储在 Access 数据库中。 下面是获取该字符串副本的技巧:

    1. 使用所需的 ODBC 连接在导航窗格中找到链接表名称。

    2. 按 Ctrl+G。 打开“VBA 即时”窗口。

    3. 输入:以下代码:

      ?CurrentDb.TableDefs("<table name>").Connect

      但替换 <表名> 步骤 a 中的链接表名称。

    4. 将返回的字符串复制到 ODBC Connect Str 属性中。

  7. SQL 视图中输入查询。

    注意:Access SQL 和 SQL Server TSQL 之间存在重要差异,尤其是语法、函数名称和函数参数。 有关详细信息,请参阅将 Access SQL 与 SQL Server TSQL 进行比较

    提示    首先在 SQL Server Management Studio 中生成 TSQL 查询,然后将 SQL 复制并粘贴到 SQL 视图中。 这可确保查询具有正确的语法。 如果无法访问 SQL Server 数据库,请考虑在桌面上安装 Microsoft SQL Server Express 版本 ,该版本最多支持 10 GB,并且是运行和检查迁移的免费且更简单的方法。

  8. 请考虑设置其他相关属性:

    • 返回记录     某些 SQL 语句返回记录(如 SELECT),而有些语句则返回记录,例如 UPDATE。 如果查询返回记录,请将此属性设置为 “是”;如果查询不返回记录,请将此属性设置为 “否”。

      注意    直通查询可以返回多个结果集,但在数据表、窗体、报表或记录集变量中,仅使用第一个结果集。 若要检索多个结果集,请使用 生成表查询 ,如以下示例所示:

      SELECT <pass-through query name>.*
      INTO <local table name>
      FROM < pass-through query name >

      必须使用星号 (*) ,因为每个结果集可能具有不同的列。 每个结果集都保存在单独的表中,并相应地将数字追加到本地表名称中。 例如,如果返回三个结果集,则表名称将为:<本地表名>,<本地表名>1,<本地表名>2。

    • 日志消息    指定是否从 Access 消息表中的 SQL 数据库返回消息。 表名称的格式为 username – nn,其中 username 是当前用户的登录名,nn 是一个从 00 开始的数字。

    • ODBC 超时    指定在运行查询时发生超时错误之前要等待的秒数。 默认值为 60 秒。 网络流量或大量使用数据库服务器可能会导致延迟。

    • 最大记录数    指定要返回的最大记录数。 系统资源可能有限,或者希望仅使用少量数据来测试结果。

  9. 输入完查询后,选择“ 设计 > 运行”。 查询将发送到数据库服务器进行处理。

另请参阅

Transact-SQL 参考

使用 Transact-SQL 进行查询

需要更多帮助?

需要更多选项?

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

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。