MS Access - SQL Server 登录提示不会消失

Posted

技术标签:

【中文标题】MS Access - SQL Server 登录提示不会消失【英文标题】:MS Access - SQL Server Login Prompt won't go away 【发布时间】:2016-07-28 23:01:08 【问题描述】:

所以我有这个应用程序,我使用升迁将所有本地表移动到 SQL Server,现在它们是链接表。我可以访问表格,并且可以毫无问题地访问与表格相关的表格。但是当我以编程方式获取记录,或在 VBA 脚本中执行 sql 操作时,会弹出 SQL Server 登录提示,要求我输入 SQL 身份验证登录以访问数据库。

我在这里点击了这个链接:

https://support.microsoft.com/en-us/kb/177594

这是我的结束代码:

Dim db1 As Database
Dim db2 As Database
Dim rs As Recordset
Dim strConnect As String
Set db1 = OpenDatabase("C:\Workspace\ms1.mdb")


strConnect = UCase(db1.TableDefs("dbo_TableA").Connect) & ";UID=User1;PWD=Password1"

Set db2 = OpenDatabase("", False, False, strConnect)
db2.Close
Set db2 = Nothing
Set rs = db1.OpenRecordset("dbo_TableA")
rs.Close
db1.Close
Set rs = Nothing
Set db1 = Nothing


DoCmd.RunCommand acCmdSaveRecord

'Sql Server login prompt pops up after running the below code;'
If DCount("*", "TableA", "[ColA] = [forms]![FRM_LOGS]![USER]") = 0 Then
    MsgBox "User ID not found - contact HelpDesk", vbCritical
    DoCmd.Quit
    Exit Sub
End If

DCount 正在触发 SQL Server 登录提示。我需要这个提示才能离开。如果我打开一个表单、查询、报告,以及任何将访问对象绑定到数据的地方,我都不会收到任何消息。只有当我尝试访问数据对象时,它才会在 VBA 中发生。

编辑!我确实找到了罪魁祸首。我在 sql server 中删除了与 TableA 的链接表,然后再次重新链接它,然后单击保存密码复选框。我以前这样做过,但没有奏效。又做了一次,它解决了一切。不知道为什么这第一次不起作用。我将以下内容标记为答案,因为在特定情况下确实解决了问题。

【问题讨论】:

澄清一下:您使用的是 SQL Server 身份验证(不是 Windows)?并且在链接表时您没有存储用户/密码? db1 是什么,当前的前端数据库或另一个也有链接表的数据库? 你可以试试这个msdn.microsoft.com/en-us/library/ms807027.aspx或者这个msdn.microsoft.com/en-us/library/dd787978.aspx @Andre db1 是我在上面代码中设置的 OpenDatbase("C:\Workspace\ms1.mdb") 如果你现在已经激活了“保存密码”,那么你不需要上面的任何代码来使用 db1 和 db2。 【参考方案1】:

不确定您在这里使用两个数据库连接并在内部表上使用 DCOUNT 做什么?

您的数据库连接似乎有已存储密码的链接表

为什么不只使用您的记录集来检查有效用户?

Set db1 = OpenDatabase("C:\Workspace\ms1.mdb")

Set rs = db1.OpenRecordset("SELECT [ColA] FROM [dbo_TableA] WHERE [ColA] = """ & [forms]![FRM_LOGS]![USER] & """")
if rs.EOF Then
    MsgBox "User ID not found - contact HelpDesk", vbCritical
    DoCmd.Quit
    Exit Sub
End If

rs.Close
db1.Close
Set rs = Nothing
Set db1 = Nothing

【讨论】:

我正在关注有关修复 sql server 登录的链接。但是,嘿!你的代码可以工作,但我确实希望它在我做 DCount 的每个地方都可以工作,我不喜欢我必须更改代码的事实,因为它是分散的。但这是一个解决方案!

以上是关于MS Access - SQL Server 登录提示不会消失的主要内容,如果未能解决你的问题,请参考以下文章

MS Access 和 SQL Server 连接(可信来源与传递登录凭据)

MS Access 给出 SQL Server 错误“登录超时已过期”,然后连接成功

MS ACCESS, VBA 将外部 MS Access 表导入 SQL server 表

我可以将MS Access连接到SQL Server而不是特定的SQL Server数据库吗?

MS SQL Server / Access 的在线表格编辑器?

SQL-Server 后端、MS Access 前端:连接