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数据库吗?