可以将 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 Server 数据库中的数据或从 Server 数据库导入数据。 - 选择 “创建>查询设计”。
- 如有必要,请关闭“ 添加表” 对话框 (在 Access 中 显示表 。
- 选择 “设计>直通”。
Access 会隐藏查询设计网格并显示 SQL 视图。 - 如果未显示查询属性表,请按 F4 显示该表。
- 在属性表中,单击“ ODBC 连接流程序 ”属性框,然后执行下列操作之一:
要获取连接字符串:
- 在导航窗格中,右键单击链接到所需数据源的表,然后选择 链接表管理器。
- 在“链接表管理器”对话框中,选中数据源的检查框,然后选择“编辑”。
- 在“ 编辑链接 ”对话框中,复制“ 连接字符串 ”框中的文本。
在 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。 如果查询返回记录,请将此属性设置为 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 秒。 由于网络流量或数据库服务器的大量使用,可能会出现延迟。
最大记录数 指定要返回的最大记录数。 系统资源可能有限,或者只想用少量数据测试结果。
输入完查询后,选择“ 设计>运行”。 查询将发送到数据库服务器进行处理。
