sql-server – ADO.Net将“Persist Security Info”默认改回True

信息:我们有一个第三方应用程序,我们用于在我们公司生产.此程序使用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帐户的密码设置为空白(暂时或仅在暂存时,这是非常的在生产中留空是危险的),以便在提供空白密码时测试应用程序是否再次运行.如果是,则应用程序不在连接字符串中设置Persist Security Info,并且认为true的值现在认为false.您的应用程序可能仅限于在服务器2003下使用,并且可能无法在服务器2008上正常运行.我无法找到将认值恢复为true的方法.

解决方法

如果应用程序使用现有连接对象来构造新的连接字符串,则可能存在此问题的解决方法 – 取决于应用程序和安全性约束.

由于在使用集成安全性时可能不存在此问题,因此我们可以假设“sql Server标准安全性”是必需的.如果sql服务器帐户使用空白密码,那么,当构造新的连接字符串时,它将是正确的(有些不小心).

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...