将 Access 应用程序链接到 SQL Server |
您所在的位置:网站首页 › access与sql连接很卡 › 将 Access 应用程序链接到 SQL Server |
将 Access 应用程序链接到 SQL Server - Azure SQL 数据库 (AccessToSQL)
项目09/05/2023
如果希望搭配使用现有 Access 应用程序和 SQL Server,可将原始 Access 表链接到已迁移的 SQL Server 或 SQL Azure 表。 链接会修改 Access 数据库,以便查询、表单、报表和数据访问页使用 SQL Server 或 Azure SQL 数据库中的数据,而非 Access 数据库中的数据。 注意 Access 表会保留在 Access 中,但不会与 SQL Server 或 SQL Azure 的更新一起更新。 链接表并验证功能之后,可能要删除 Access 表。 链接 Access 和 SQL Server 表将 Access 表链接到 SQL Server 或 SQL Azure 表时,Jet 数据库引擎会存储连接信息和表元数据,但数据存储在 SQL Server 或 SQL Azure 中。 此链接允许 Access 应用程序针对 Access 表进行操作,即使实际表和数据位于 SQL Server 或 SQL Azure 中。 注意 如果使用 SQL Server 身份验证,密码将存储在链接的 Access 表的明文中。 建议使用 Windows 身份验证。 链接表 在 Access 元数据资源管理器中,请选择要链接的表。 右键单击“表”,然后选择“链接”。 SQL Server Migration Assistant (SSMA) for Access 会备份原始 Access 表并创建链接表。 链接表之后,SSMA 中的表会显示一个小链接图标。 在 Access 中,表显示有“链接”图标,该图标是一个地球,且有一个箭头指向它。 在 Access 中打开表时,将使用键集游标来检索数据。 因此,对于大型表,不会一次性检索所有数据。 但是,在浏览表时,Access 会视需要检索其他数据。 重要 若要链接 Access 表与 Azure 数据库,需要 SQL Server Native Client (SNAC) 10.5 或更高版本。 可以从 Microsoft SQL Server 2008 R2 功能包中获取最新版本的 SNAC。 取消链接 Access 表从 SQL Server 或 SQL Azure 表取消链接 Access 表时,SSMA 将恢复原始 Access 表及其数据。 取消链接表 在 Access 元数据资源管理器中,请选择要取消链接的表。 右键单击“表”,然后选择“取消链接”。 将表链接到其他服务器如果已将 Access 表链接到一个 SQL Server 实例,且以后要更改指向另一个实例的链接,则必须重新链接这些表。 将表链接到其他服务器 在 Access 元数据资源管理器中,请选择要取消链接的表。 右键单击“表”,然后选择“取消链接”。 单击“重新连接到 SQL Server”按钮。 连接到要与 Access 表链接的 SQL Server 或 SQL Azure 实例。 在 Access 元数据资源管理器中,请选择要链接的表。 右键单击“表”,然后选择“链接”。 更新链接的表如果 SQL Server 或 SQL Azure 表定义已更改,则可以使用本主题前面所述过程取消链接 SSMA 中的表,然后重新链接。 还可以使用 Access 来更新表。 使用 Access 更新链接的表 打开 Access 数据库。 在“对象”列表中,单击“表”。 右键单击链接表,然后选择“链接表管理器”。 选中要更新的每个链接表旁边的复选框,然后单击“确定”。 迁移后可能会出现的问题以下部分列出了将数据库从 Access 迁移到 SQL Server 或 SQL Azure,然后链接表后,现有 Access 应用程序中可能出现的问题,以及原因和解决方法。 链接表性能降低原因:某些查询在调整大小后可能会变慢,原因如下: 应用程序依赖于 SQL Server 或 SQL Azure 中不存在的函数,这会导致 Jet 在本地下拉表以运行 SELECT 查询。 更新或删除许多行的查询由 Jet 作为每行的参数化查询发送。 解决方法:将运行缓慢的查询转换为传递查询、存储过程或视图。 转换为传递查询具有以下问题: 无法修改传递查询。 必须以其他方式修改查询结果或添加新记录,例如,在绑定到查询的窗体上具有显式的“修改”或“添加”按钮。 某些查询需要用户输入,但传递查询不支持用户输入。 可以通过提示输入参数的 Visual Basic for Applications (VBA) 代码或用作输入控件的窗体来获取用户输入。 在这两种情况下,VBA 代码会将具有用户输入的查询提交到服务器。 更新记录之前,不会更新自动递增列原因:在 Jet 中调用 RecordSet.AddNew 后,自动递增列在更新记录之前可用。 在 SQL Server 或 SQL Azure 中,并非如此。 标识列的新值仅在保存新记录后可用。 解决方法:在访问标识字段之前,运行以下 Visual Basic for Applications (VBA) 代码: Recordset.Update Recordset.Move 0, Recordset.LastModified 新记录不可用原因:使用 VBA 将记录添加到 SQL Server 或 SQL Azure 表时,如果表的唯一索引字段具有默认值,并且未向该字段赋值,则在 SQL Server 或 SQL Azure 中重新打开表之前,不会显示新记录。 如果尝试从新记录中获取值,将收到以下错误消息: Run-time error '3167' Record is deleted. 解决方法:使用 VBA 代码打开 SQL Server 或 SQL Azure 表时,请包括 dbSeeChanges 选项,如以下示例所示: Set rs = db.OpenRecordset("TestTable", dbOpenDynaset, dbSeeChanges) 迁移后,某些查询将不会允许用户添加新记录原因:如果查询不包含唯一索引中包含的所有列,则无法使用查询来添加新值。 解决方法:确保至少一个唯一索引中包含的所有列都属于查询的一部分。 无法使用 Access 修改链接的表的架构原因: 迁移数据和链接表后,用户无法在 Access 中修改表的架构。 解决方法:使用 SQL Server Management Studio 修改表架构,然后在 Access 中更新链接。 迁移数据后,超链接功能会丢失原因: 迁移数据后,列中的超链接会失去其功能,并变为简单 nvarchar(max) 列。 解决方法: 无。 Access 不支持某些 SQL Server 数据类型原因:如果以后要更新 SQL Server 或 SQL Azure 表以包含 Access 不支持的数据类型,则无法在 Access 中打开该表。 解决方法:可以定义一个 Access 查询,它仅返回具有受支持数据类型的那些行。 另请参阅将 Access 数据库迁移到 SQL Server |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |