【问题标题】:After splitting MS Access to SQL Server for execution queries which engine is used在将 MS Access 拆分为 SQL Server 以执行查询后使用哪个引擎
【发布时间】:2017-09-09 11:11:40
【问题描述】:

我想知道在将 MS Access 拆分到 SQL Server 后,在 Access、MS Access 的引擎或 SQL Server 的引擎中执行查询?

拆分到SQL Server(后端)后,有多少用户可以使用MS Access前端?使用 MS Access(前端)和 MS Access(后端)时,用户数量是否仍然有限?

我们也可以将 MS Access 中的查询传输到 SQL Server 吗?

【问题讨论】:

    标签: sql-server ms-access


    【解决方案1】:

    这是多个问题,但我会尽力回答所有问题:

    1.拆分数据库后,有多少用户可以同时使用一个 Access 前端?

    这取决于:如果您使用单个文件作为前端(您不应该这样做),并且多个用户正在打开该单个文件,您仍然受到 Access 最大用户数量的限制。

    但是,如果您为每个用户提供自己的前端副本,则您可以获得 MS-SQL 的最大连接数 (32,767)。但是,您可以使用 VBA 打开到同一个服务器的多个连接,因此实际上这个数字可能会更低。

    如果您同时使用 MS Access 作为前端和后端,您将受到 Access 最大用户数的限制。

    2。拆分数据库后,我的现有查询使用哪个查询引擎?

    拆分数据库后,所有现有查询仍由 JET/ACE (Access) 数据库引擎执行。但是,您可以将查询更改为传递查询以在 SQL Server 数据库上运行查询。请注意,T-SQL 与 JET/ACE SQL 不同,您的查询可能需要相应调整。

    如果您想优化特定查询,您可以将其完全作为视图移动到 SQL 服务器(您应该这样做,尤其是对于经常使用的查询)。通过这种方式,SQL Server 可以做一些事情,比如存储查询执行计划和缓存。

    【讨论】:

    • 永远不要共享前端!
    • @BitAccesser 不,当然不是,但只是说明如果您要这样做,则最大用户数量将受到限制(就像您应该真正将查询移至服务器一样)。
    • 你应该在回答中提到这一点,否则人们认为这还不错,除非他们没有达到这个限制。
    • @BitAccesser 调整答案
    • 值得注意的是,对于“普通查询”(SELECT foo FROM a JOIN b WHERE c,虽然由 ACE 引擎运行,但繁重的工作将在 SQL Server 上完成。例外情况是,例如,当您在查询。@Masoud
    【解决方案2】:

    假设您通过ODBC 链接,这取决于您的使用情况。这两种方法都适用于MS-SQL(您称之为 SQL Server),但其他方法也适用(我使用MySQLas BE)。如果您使用旧的访问查询,则使用 jet,但您可以使用在服务器上执行的直通查询。

    用户数量几乎是无限的(32,767 connections 感谢@Erik von Asmuth),并且您不会像在 ms-access 中那样在许多用户中损失性能。

    您的查询应该长期转移到服务器上。但是您可以从旧的开始(性能较差,但与多用户 ms-acces BE 相比,它的速度很快,只是一些减速ms-access-query-on-linked-tables-with-multiple-joins-is-very-slow)。

    另一大优势:您可以随时备份您的数据库,无论其他人是否正在使用它。

    查看Move-Access-data-to-a-SQL-Server 了解操作方法和Optimizing Microsoft Office Access Applications Linked to SQL Server

    试一试,你永远不会回去。

    【讨论】:

      【解决方案3】:

      只是为了澄清当前的 Microsoft Access。通过并弃用项目。在同一个局域网中,将 ODBC 链接到 SQL Server、MySQL 等没有问题。

      每个用户都必须有自己的前端。前端文件不能被多个用户同时共享。

      Access 是一个前端数据库;查询在 Access 中运行。

      同时用户数将由后端服务器定义。当然,作为前端数据库存在有效负载问题。今天的 PC 非常强大,但超过 1M 的活动记录,您不应忽视合理数量的 RAM 和处理。

      【讨论】:

      • 请注意,传递查询绝不会被弃用。 ADP 项目,是的。
      • 查询在 Access 中运行,但如果您在该查询中设置限制,则该查询将被传递到服务器,并且只有一行(或多行)被拉下网络线路。某些查询,例如具有多个表(连接)的查询,如果查询在服务器端运行,则 Access 将提取更多记录,但对于从 Access 运行的基本查询,仅从服务器而不是整个表中提取所需的记录。这包括直接绑定到表格的表格。如果您打开带有“where”子句的表单,则只会从 SQL Server 中提取第一条记录,而不是从整个表中提取。
      • 此外,前端可以由多个用户同时共享。这是一种不好的做法,应该避免,但肯定是可能的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多