信息:我们有一个第三方应用程序,我们用于在我们公司生产.此程序使用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.我没有权限更改应用程序内部的连接字符串,因为它是第三方.如本文所示
问题:有没有办法更改ADO.Net的行为,以便在连接字符串之外将此值默认为True而不是False.我希望能够至少证明或反驳这是引起问题的特征.
注意:我意识到这是一个巨大的安全问题,篡改了此设置,如果更改它们以确保服务器和应用程序是隔离的,我们将采取正确的预防措施.
解决方案:由@William提供.如果要将SQL Server第3方应用程序从Server 2003更新到Server 2008+并且您正在获得上面的连接,那么在2003年您没有这样做,请将SQL帐户的密码设置为空白(暂时或仅在暂存时,这是在生产中留空非常危险),以便在提供空白密码时测试应用程序是否再次运行.如果是,则应用程序不在连接字符串中设置持久安全信息,并且默认为true的值现在默认为false.您的应用程序可能仅限于在服务器2003下使用,并且可能无法在服务器2008+上正常运行.我无法找到将默认值恢复为true的方法.
我公司最近使用tivoli工作负载调度程序(TWS)远程触发从z/OS到窗口服务器的作业.我们测试过tivoli可以成功触发mssql服务.
现在的问题是我们有一个.NET CL程序,我们每天使用它来将AS400中的一些数据提取到mssql服务器,它在使用Windows调度程序之前工作得很好,并且在特定时间范围内每天触发.现在我们尝试集中调度程序,以便TWS远程触发准备好的批处理文件(它将触发CL程序).
但尝试连接到AS400 DB时,CL程序的执行显示以下错误.
.Net Framework数据提供程序需要Microsoft数据访问组件(MDAC).请安装Microsoft数据访问组件(MDAC)版本2.6或更高版本.
编辑:在正常情况下,我们假设程序可以成功触发,它应该就像使用Windows调度程序,设置计划并执行它.唯一的区别是调度程序现在不是Windows调度程序,而是切换到TWS并远程触发CL程序.但执行程序在执行CL程序时显示上述错误.我们不知道为什么会出现这个错误.我们试图重新运行CL程序并在Windows调度程序中安排它,工作正常.但远程安排TWS,错误.
对于我们迄今为止所做的测试和观察:
我们的服务器是Windows server 2008 SP2 x64,我已经对旧版Windows中使用的MDAC进行了一些研究,而server 2008应该提供更新版本的MDAC(WDAC 6.0)并且无法重新安装,所以我假设MDAC/WDAC必须是正确安装.
CL程序是用.NET 2.0/3.0/3.5编译的,并且测试了所有这些程序都会产生相同的错误.
他们的错误日志能够生成到sql server DB,所以我假设在CL程序中使用的连接驱动程序没有问题.但它可能是由IBMDA400驱动程序引起的.
TWS使用我们服务器中的管理员帐户来触发批处理文件,我们的服务器中安装了一个TWS客户端(监听器)用于我们服务器中的触发程序,但是我们不知道他们如何连接到我们的服务器(SSH?telnet?)和他们似乎没有实际登录到我们的服务器进行远程触发(在静默模式下触发我们的工作).
我们迫切希望寻求任何解决方案,如果有人能提供任何线索或想法,那将是非常有帮助的,并为将来有同样问题的人们提供大帮助.
非常感谢你!.
在使用C#在ASP.NET中执行以下代码时,我收到的异常如"行/列没有数据".
OdbcConnection DbConnection = new OdbcConnection(ConfigurationManager.AppSettings["ConnectionStr"]);
DbConnection.Close();
string cmdText = "SELECT Team_ID FROM team_details WHERE Team_Code=?";
OdbcCommand cmd = new OdbcCommand(cmdText, DbConnection);
cmd.Parameters.Add("?Code", OdbcType.VarChar).Value = tbCode.Text;
DbConnection.Open();
OdbcDataReader DR = cmd.ExecuteReader();
DR.Read();
if (DR.GetValue(0) != DBNull.Value)
{
args.IsValid = false;
}
else
{
args.IsValid = true;
}
DbConnection.Close();
Run Code Online (Sandbox Code Playgroud)
我正在使用Visual Studio 2008和MySQL.我正在使用MySql ODBC连接器5.1和MDAC2.8.
请指导我如何解决这个问题.