创建传递查询
应用对象
可以使用 Access 作为前端应用程序,然后链接到后端服务器中的表,例如SQL Server。 默认情况下,大多数查询在 Access ACE 数据库引擎中本地运行。 在某些情况下,Access 可以在SQL Server远程运行查询,具体取决于 SQL 语法和其他因素。 有关详细信息,请参阅 重新发现 JET 和 ODBC 白皮书中的“JET 数据库引擎版本 3.0:ODBC 连接”。
不过,通常希望在数据库服务器上显式运行查询。 这样做有助于提高性能:数据库服务器比台式计算机具有更高的处理能力,并且可以通过网络连接返回较小的数据子集。 若要在数据库服务器上运行查询,请使用传递查询,该查询是使用 ODBC 连接字符串连接到SQL Server的 Transact SQL (TSQL) 语句。 例如,可以传递 SELECT 语句以将数据返回到数据表、窗体、报表或列表控件, (数据操作语言 (DML) 语句) 运行等效的操作查询,调用存储过程,) (数据定义语言 (DDL) 语句执行管理任务。
注意 传递查询的结果为只读。 若要直接编辑数据表或窗体中的数据,请创建指向索引视图的链接表。 有关详细信息,请参阅 创建索引视图。
- 连接到服务器数据库。
有关链接到SQL Server的详细信息,请参阅导入或链接到SQL Server数据库中的数据和链接到或从Azure SQL服务器数据库导入数据。 - 选择“ 创建>查询设计”。
- 如有必要,请关闭“ 添加表 ”对话框 (在 Access 中 显示表 。
- 选择“ 设计>直通”。
Access 会隐藏查询设计网格并显示 SQL 视图。 - 如果未显示查询属性表,请按 F4 显示它。
- 在属性表上,单击“ ODBC Connect Str ”属性框,然后执行下列操作之一:
获取连接字符串:
- 在导航窗格中,右键单击链接到所需数据源的表,然后选择“ 链接表管理器”。
- 在“链接表管理器”对话框中,选择数据源的“检查”框,然后选择“编辑”。
- 在 “编辑链接 ”对话框中,复制“ 连接字符串 ”框中的文本。
在 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,并且是运行迁移并检查迁移的免费且更简单的方法。请考虑设置其他相关属性:
返回记录 某些 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 秒。 网络流量或大量使用数据库服务器可能会导致延迟。
最大记录数 指定要返回的最大记录数。 系统资源可能有限,或者希望仅使用少量数据来测试结果。
输入完查询后,选择“ 设计>运行”。 查询将发送到数据库服务器进行处理。
