如何避免在MSAccess 2003中提示用户标识和密码

时间:2015-12-30 18:15:56

标签: sql-server ms-access

我是.Net / SQL Server程序员。我正在尝试创建一个由其他人创建的Access数据库来工作。它看起来像使用类似于Save password for ODBC connection to SQL Server from MS Access 2007的过程,但我使用的是Access 2003,所以我怀疑还需要做其他事情。我真的不知道我在使用Access做什么,但我坚持使用它。

我有一个ODBC连接,看起来链接表使用它。该数据库有一个AutoExec,它从报表使用的链接表中填充一些本地表。它还调用qryConnect与链接文章之类的无dsn连接,这似乎有效。我已经让它停止在启动时询问用户和密码。我也可以打开大多数报告没有问题,2不工作。表单在启动时加载基本上显示报告的按钮。这是奇怪的地方。

使用Windows凭据从ODBC驱动程序报告失败。然后登录框显示正确的用户(具有只读权限的用户),但会检查可信连接框。我没有在DSN中检查信任框。我Trusted_Connection=Yes中的无DSN连接中没有qryConnect

这是

形式的代码
stDocName = "rptNegativeLotQtys"
DoCmd.OpenReport stDocName, acPreview

我不知道我是怎么把它弄得这么多,在我再次尝试将所有内容复制到一个新的mdb并再试一次之前我希望得到一些指导。

另一方面,我可以在我的机器上打开一切。就Windows而言,我是一名管理员,但不是SQL Server。

编辑: 我为这些报告创建了一个新的DSN。然后我删除了所有链接表,然后使用新的DSN重新链接。我查看了MsysObjects中的链接表,并在那里列出了新的DSN。然而,Access仍会提示输入密码。它似乎没有缓存密码。

1 个答案:

答案 0 :(得分:0)

实际上,您不需要在使用的连接字符串中添加或存储UID / Pass。但是,您必须确保所有连接字符串都是相同的。如果它们不同,则缓存的UID /密码将不起作用。

此外,确保在使用Windows Auth连接后不连接或打开表 - 原因是当您添加表链接(特别是通过代码)时,将发生使用Windows身份验证的缓存设置,并且因此,当链接建议不这样做时,将发生提示。换句话说,如果您已经通过Windows身份验证打开了任何表链接,则链接和尝试使用SQL登录将不起作用(因此退出数据库并且不要打开任何可以/可以使用Windows身份验证的表)。

所以我会删除这些链接并重新创建它们 - 但同样,请确保您从未作为Windows身份验证用户连接到SQL服务器。

所以"缓存"该访问具有很好的朋友/功能,无需在连接字符串中包含UID / pass - 但如果您在任何时候通过Windows身份验证连接到相关数据库,则SAME功能会让您感到非常糟糕。

如何“缓存”用户登录和ID在此解释:

电源提示:提高数据库连接的安全性

http://blogs.office.com/b/microsoft-access/archive/2011/04/08/power-tip-improve-the-security-of-database-connections.aspx

所以你“可以”在链接表中包含UID / LOGON,但上面显示也可以使用一次登录。因此,在设置表链接时要非常小心 - 由于用户的上述“缓存”以及他们如何登录数据库 - 如果您已经连接,ATTEMPTS创建基于SQL登录的表链接的代码实际上将使用Windows身份验证结束这样(如果要使用SQL登录重新链接,请退出数据库)。

请注意,Access链接表后不会使用DSN。来自DSN的信息是连接字符串的一次复制。您可以通过进入我的文档并删除您使用的DSN来验证这一点。假设链接表工作正常,您发现如果删除DSN,它们将继续工作。实际上,这意味着除了创建链接表时,链接表的DSN更少。这使您可以轻松地将应用程序复制到不同的计算机,而无需复制DSN。

为了确保所有链接表使用相同的连接字符串,将它们全部删除并重新链接是一件简单的事情。

您也可以点击ctrl-g调出调试窗口,然后以这种方式查看连接字符串:

? currentdb.TableDefs("linked table name").Connect

Windows auth连接字符串的调试窗口中的结果如下所示:

ODBC;Description=test DSN;DRIVER=SQL Server;
SERVER=albertkallal-pc\SQLEXPRESS;
Trusted_Connection=Yes;
APP=Microsoft Office 2010;DATABASE=AxisMIS

请注意以上我们如何看待"可信连接" (这意味着windows auth)。

如果我使用SQL登录链接表(和REMEMBER检查保存密码),那么你会看到:

ODBC;Description=TEST3;DRIVER=SQL Server;
SERVER=ALBERTKALLAL-PC\SQLEXPRESS;
UID=MySQLogon;PWD=MyPassword;
APP=Microsoft Office 2010;DATABASE=AxisMIS

请记住在表格链接过程中"检查"保存密码。

例如: enter image description here