可以使用 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 数据库导入数据。
-
选择“创建”>“查询设计”。
-
如有必要,请关闭“ 添加表 ”对话框 (在 Access 中 显示表 。
-
选择“ 设计 >直通”。
Access 会隐藏查询设计网格并显示 SQL 视图。
-
如果未显示查询属性表,请按 F4 显示它。
-
在属性表上,单击“ ODBC Connect Str ”属性框,然后执行下列操作之一:
若要获取连接字符串,请执行以下操作:
-
在导航窗格中,右键单击链接到所需数据源的表,然后选择“ 链接表管理器”。
-
在“ 链接表管理器 ”对话框中,选中数据源的复选框,然后选择 “编辑”。
-
在 “编辑链接 ”对话框中,复制“ 连接字符串 ”框中的文本。
-
选择“ 生成 ”。
-
按照提示创建包含连接字符串信息的 DSN 文件。 有关详细步骤,请参阅 导入或链接到 SQL Server 数据库中的数据 和 链接到 Azure SQL Server 数据库中的数据或从 Azure SQL Server 数据库中导入数据。
创建 DSN 文件连接后,ODBC 连接字符串内部存储在 Access 数据库中。 下面是获取该字符串副本的技巧:
-
使用所需的 ODBC 连接在导航窗格中找到链接表名称。
-
按 Ctrl+G。 打开“VBA 即时”窗口。
-
输入:以下代码:
?CurrentDb.TableDefs("<table name>").Connect
但替换 <表名> 步骤 a 中的链接表名称。
-
将返回的字符串复制到 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 秒。 网络流量或大量使用数据库服务器可能会导致延迟。
-
最大记录数 指定要返回的最大记录数。 系统资源可能有限,或者希望仅使用少量数据来测试结果。
-
-
输入完查询后,选择“ 设计 > 运行”。 查询将发送到数据库服务器进行处理。