使用Oracle Data Provider for .NET,我的应用程序使用特权SYS用户连接到数据库。连接字符串如下:
Data Source=MyTnsName;User ID=sys;Password=MySysPassword;DBA Privilege=SYSDBA
这适用于Oracle 10,但Oracle 11一直抱怨用户名或密码无效。我确认密码是正确的 - 其他应用程序可以使用相同的凭据正常工作。
请注意,对于普通用户(没有DBA Privilege
部分),连接到Oracle 11可以很好地工作。
那么,出了什么问题?
更新:
区分大小写不是问题 - 在构造连接字符串时,我的代码不会更改密码大小写,并且密码可以与其他非.NET应用程序一起使用。我怀疑这可能是由我用来连接11数据库的Oracle 10客户端引起的。 Oracle声明客户端是向上兼容的,唯一的缺点是您无法使用数据库的某些新功能。但是,
SYSDBA
连接显然不是新的Oracle 11功能,而且 - 再次 - 非.NET应用程序(Keeptool Hora)可以使用相同的设置进行连接。还有其他想法吗?
更新2:
使用Oracle 11客户端时问题仍然存在: - (
更新3:
我用另一个数据库安装版本11.2(第一个是11.1)进行了测试 - 结果相同。此外,值得注意的是,对于用户
SYSTEM
(也使用DBA Privilege
部分),一切正常。但是,我 使用SYS
。
答案 0 :(得分:0)
11g中改变的一件事是密码变得区分大小写。我不知道你是如何制作你的ConnectionString的,但它是否可以在错误的情况下获取(或放置)密码?
答案 1 :(得分:-1)
根据this thread,您必须将as sysdba
添加到您的连接字符串。