信息:我们在公司使用第三方应用程序进行生产。该程序使用DSN通过ODBC连接到我们的SQL Server 2012数据库。此应用程序在Server 2003 (MADC 2.8)下工作正常,但是当我将其带到Server 2008 x86 (DAC 6.0)时,出现了连接失败,显示“Microsoft OLE DB Provider SQL Server Login failed for user XXX”。我有一种感觉,这是由于默认值“persist security info”从True更改为False,在Server 2008及更高版本的Windows服务器上发生的(在DAC 6.0中进行更改)。由于该应用程序是第三方的,我无法访问更改应用程序内部的连接字符串。文章
问题: 是否有办法更改ADO.Net的行为,使此值默认为True而不是False(在连接字符串之外)?我想至少能够证明或否定这个特性是否引起了问题。
注意: 我意识到这是一个巨大的安全问题,修改此设置会产生风险。如果更改了该值,我们将采取正确的预防措施,以确保服务器和应用程序被隔离。
解决方案: 由@William提供。如果您正在将SQL Server第三方应用程序从Server 2003更新到Server 2008+,并且出现了上述连接问题,则将SQL帐户的密码设置为空白(仅在临时或分期阶段,这在生产中非常危险)以测试应用程序是否会在提供空白密码时再次正常工作。如果工作正常,则该应用程序未在连接字符串中设置Persist Security Info,并且默认为true的值现在默认为false。您的应用程序可能被限制在使用Server 2003下,并且在Server 2008+上可能无法正常运行。我找不到任何方法来使该值默认回到true。