MS Access连接字符串中的硬代码凭据(受密码保护)

问题描述:

我想硬连接到Access数据库的凭据。MS Access连接字符串中的硬代码凭据(受密码保护)

我的连接字符串目前看起来像

$strConn = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = $dbName; 

这工作得很好,但是我提示输入“用户名”和“密码”。我已经研究访问连接字符串,但我只能找到一个包含密码(不是用户)

$strConn = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source=c:\App1\Your_Database_Name.mdb; Jet OLEDB:Database Password=Your_Password" 

我一直在使用这种尝试(以及用户/用户名/ UID等的组合),但没有发现任何东西这样可行。

这里是弹出(自动填充服务名称)窗口:

enter image description here

类似于此:Oracle ODBC Driver Connect always asking for password

我相信这是与Access数据库被链接到一个oracle数据库。这是我的手吗?

+0

你的安全状况到底是什么?它是一个加密的.mdb,一个带有工作组文件或平面.mdb的受保护的.mdb文件吗? .mdb中是否有链接表? (如果是这样,您可能希望直接连接到这些链接表,而不是通过Access)。您是否可以在不输入登录信息的情况下使用访问数据库,并且没有得到此提示? –

+0

您是否试图将Access表链接到Oracle?我会尝试相反的。将表迁移到Oracle并将其链接回Access。 – SunKnight0

+0

@ErikvonAsmuth我不确定它是什么类型的.mdb。我不认为它是安全的,因为我打开它时没有提示输入凭据。但是,它确实有链接表。当我尝试打开一个时,我会看到与上面相同的'Oracle ODBC Driver Connect'窗口。我如何直接访问链接表?可能值得一提的是,这个数据库属于一家大公司,我无法控制它,所以我很难像其他评论所暗示的那样对其进行重组。 – Thomas

您可以使用它的连接字符串,并在用户名和密码填写到一个链接表的直接访问。对于Oracle而言,连接字符串结构可能因使用的提供程序而异。查看ConnectionStrings.com获取选项列表(最有可能的选项是Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;User Id=myUsername; Password=myPassword;)。

您可以通过查询中的Microsoft Access MSysObjects获得链接表的当前连接字符串:

SELECT MSysObjects.Connect 
FROM MSysObjects 
WHERE MSysObjects.Name="MyLinkedTableName"; 

你甚至可以更改连接字符串包含用户名和密码,如果你想(见this answer) 。

但是,请注意,最初链接Access中的表的人选择不包含用户名和密码。在不安全的Access数据库中包含用户名和密码可能会带来安全风险。

另外,请注意,如果直接连接到Oracle数据库,则必须引用在那里定义的表名称,并使用适当的SQL变体来查询它。

根据ConnectionStrings.com便利的参考页面,通过User Id=<username>Password=<password>像这样,

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;User Id=admin; 
Password=Pa$$w0rd; 
+0

这是我尝试的第一件事情之一。由于某种原因,它不起作用。 – Thomas

+0

尽管ConnectionStrings通常是一个很好的资源,但用户ID仅用于使用工作组文件的工作组身份验证,在这种情况下,您需要指定工作组文件:Provider = Microsoft.Jet.OLEDB.4.0 Data源= C:\了MyDatabase.mdb; Jet OLEDB:System Database = system.mdw; User ID = myUsername; Password = myPassword;'。但是,我认为这不是这种情况。 –