【问题标题】:SQL Server not immediately providing all data for tables/queriesSQL Server 没有立即为表/查询提供所有数据
【发布时间】:2018-03-03 16:06:26
【问题描述】:

我们最近将后端转换为 SQL Server(从 Access),并且仍在使用 Access 前端。

我注意到某些表格或表单不会在导航栏中显示记录数,就像我们有 Access 后端时那样。我研究并发现一篇文章指出 SQL Server 不会自动加载链接表或查询的所有记录,直到请求这些特定记录(或类似的东西)。显然 Access 做了同样的事情,但他们有不同的默认设置,有多少记录会触发他们保留一些数据。

按照数据库标准,我们的数据库非常小。有没有办法让 SQL Server 一直为我们提供所有数据?我们已经使用视图并通过查询来最小化它需要通过网络发送的数据量。我认为我们并没有从 SQL Server 为我们提供此类数据的“智能”中获得很多性能。如果有意义的话,我们的用户宁愿等待一秒钟来获取数据,然后能够在前端更快地导航他们的表单。查看记录的数量会很有帮助。

供参考:我们使用(我希望我能正确理解这个术语;我是新手)DAO 连接,其连接字符串如下所示。有什么我可以添加到连接字符串来影响这种行为的吗?还是我们数据库中的一些设置?

' Define connection string
qdf.Connect = "ODBC;Driver=" & myDriver & ";" & _
              "server=" & myServer & ";" & _
              "database=" & mySQLDB & ";" & _
              "uid=" & myuid & ";" & _
              "Pwd=" & mypwd & ";"

【问题讨论】:

  • 不幸的是,做这些具体的事情仅限于表格。对于数据表视图中的表单(看起来像查询),我可以向您展示如何操作
  • 首先有几个问题:a) 您的应用程序在每个时刻为多个用户提供服务,还是主要由单个用户使用? b) '所有数据' - 你的意思是只记录计数,或者你可以描述 SqlServer 不返回哪些行?
  • 答案:(a) 为许多 (~50) 用户提供服务,但一次可能不超过 ~20 个。 (b) 我不确定哪些数据可能会或可能不会被加载,尽管我研究的一些网页表明并非所有数据都已加载。我们的主要问题是记录数,但我的意思是,如果 SQL Server 这样做是为了提高性能,那么我们在这里不太关心性能。

标签: sql-server ms-access odbc connection-string dao


【解决方案1】:

如果您想在加载表单时初始化整个记录集,您可以执行以下操作:

Private Sub Form_Load()
    Me.RecordSet.MoveLast
    Me.RecordSet.MoveFirst
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多