创建传递查询

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

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

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

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

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

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

  3. 关闭“显示表”对话框。

  4. 选择 "设计>传递"。

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

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

  6. 在属性表上, 单击 " ODBC 连接字符串" 属性框, 然后执行下列操作之一:

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

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

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

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

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

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

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

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

    2. 按 Ctrl + G。 以打开 "VBA 即时窗口"。

    3. Enter: 以下代码:

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

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

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

  7. SQL 视图中输入查询。

    注意   Access SQL 和 SQL Server TSQL 之间存在重大差异, 尤其是语法、函数名称和函数参数。 有关详细信息, 请参阅使用 Sql SERVER TSQL 比较 ACCESS SQL

    提示    先在 SQL Server Management Studio 中生成 TSQL 查询, 然后将 SQL 复制并粘贴到Sql 视图中。 这可确保查询具有正确的语法。 如果你不能方便地访问 SQL Server 数据库, 请考虑在你的桌面安装MICROSOFT SQL Server Express edition , 它支持最高 10 GB 的功能, 并且是一种免费且更简单的方法来运行和检查迁移。

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

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

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

      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 查询

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

此信息是否有帮助?

谢谢您的反馈!

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

×