创建传递查询

应用对象
Microsoft 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 数据库中的数据或从 Server 数据库导入数据。
  2. 选择 “创建>查询设计”。
  3. 如有必要,请关闭“ 添加表” 对话框 (在 Access 中 显示表 。
  4. 选择 “设计>直通”。
    Access 会隐藏查询设计网格并显示 SQL 视图。
  5. 如果未显示查询属性表,请按 F4 显示该表。
  6. 在属性表中,单击“ ODBC 连接流程序 ”属性框,然后执行下列操作之一:

要获取连接字符串:

  1. 在导航窗格中,右键单击链接到所需数据源的表,然后选择 链接表管理器。
  2. 在“链接表管理器”对话框中,选中数据源的检查框,然后选择“编辑”。
  3. 在“ 编辑链接 ”对话框中,复制“ 连接字符串 ”框中的文本。
  1. 在 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,是一种免费且更简单的方式来运行和检查迁移。

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

    • 退货记录 有些 SQL 语句返回记录,如 SELECT,而另一些则不返回记录,例如 UPDATE。 如果查询返回记录,请将此属性设置为 Yes;如果查询未返回记录,请将此属性设置为“ 否”。
      备注 直通查询可以返回多个结果集,但在数据表、窗体、报表或记录集变量中,仅使用第一个结果集。 要检索多个结果集,请使用 生成表查询 ,如以下示例所示:

      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 秒。 由于网络流量或数据库服务器的大量使用,可能会出现延迟。

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

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

另请参阅

Transact-SQL 参考

使用 Transact-SQL 进行查询