信息:我们有一个第三方应用程序,我们用于我们公司的生产。此程序使用DSN通过ODBC连接到我们的SQL Server 2012数据库。此应用程序在Server 2003(MADC 2.8)下正常工作,但是当我将它带到Server 2008 x86(DAC 6.0)时,我的连接失败,“用户XXX的Microsoft OLE DB提供程序SQL Server登录失败”。我有一种感觉,这是因为在服务器2008及更高版本(在DAC 6.0中进行了更改)的Windows服务器上,“持久安全信息”的默认值从True变为False。我没有权限更改应用程序内部的连接字符串,因为它是第三方。如此article
中所示问题:有没有办法更改ADO.Net的行为,以便在连接字符串之外将此值默认为True而不是False。我希望能够至少证明或反驳这是引起问题的特征。
注意:我意识到这是一个巨大的安全问题,篡改了这个设置,如果更改它,我们将采取正确的预防措施,以确保服务器和应用程序是隔离的。
解决方案:由@William提供。如果要将SQL Server第3方应用程序从Server 2003更新到Server 2008+,并且您正在获得上面的连接,那么在2003年您没有这样做,请将SQL帐户的密码设置为空白(暂时或仅在暂存时,这是在生产中留空非常危险),以便在提供空白密码时测试应用程序是否再次运行。如果是,则应用程序不在连接字符串中设置持久安全信息,并且默认为true的值现在默认为false。您的应用程序可能仅限于在服务器2003下使用,并且可能无法在服务器2008+上正常运行。我无法找到将默认值恢复为true的方法。
答案 0 :(得分:4)
如果应用程序使用现有的连接对象来构造新的连接字符串,则可能存在此问题的解决方法 - 取决于应用程序和安全性约束。
由于在使用集成安全性时可能不存在此问题,因此我们可以假设“SQL Server标准安全性”是必需的。如果空白密码用于SQL Server帐户,那么,当构建新的连接字符串时,它将是正确的(有些不小心)。