我正在尝试使用ssh密钥对身份验证方法连接到远程服务器(在cloudapp上)上的Oracle数据库。我可以使用此代码连接到服务器。
PrivateKeyFile keyFile = new PrivateKeyFile(@"D:\ssh.ppk");
var keyFiles = new[] { keyFile };
var username = "Admin";
var methods = new List<AuthenticationMethod>();
methods.Add(new PrivateKeyAuthenticationMethod(username, keyFiles));
var con = new ConnectionInfo("abc.xyz.net", 22, username, methods.ToArray());
using (var client = new SshClient(con))
{
client.Connect();
if (client.IsConnected)
{
var portForwarded = new ForwardedPortLocal("127.0.0.1", 3306, "127.0.0.1", 3306);
client.AddForwardedPort(portForwarded);
portForwarded.Start();
var connectionString = "DATA SOURCE=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=3306)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ABC_DB)));PASSWORD=myPassword;USER ID=myUsername";
//var connectionString = "DATA SOURCE=127.0.0.1:3306/ABC_DB;PASSWORD=myPassword;USER ID=myUsername";
using (OracleConnection conn = new OracleConnection(connectionString))
{
//conn.Open();
using (OracleCommand com = new OracleCommand("SELECT * FROM Table_Name", conn))
{
com.CommandType = CommandType.Text;
DataSet ds = new DataSet();
OracleDataAdapter da = new OracleDataAdapter(com);
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
}
}
client.Disconnect();
}
else
{
Console.WriteLine("Client cannot be reached...");
}
}
当我尝试连接到数据库时,它会在行da.Fill(ds);
处抛出异常数据包校验和失败。
如果您知道需要更改哪些设置,请在哪里帮助我。
提前致谢。
答案 0 :(得分:0)
12569,00000,“TNS:数据包校验和失败”
原因:收到的数据与发送的数据不同。
操作:再次尝试交易。如果错误持续存在,请启用跟踪并重新执行操作。
服务器和客户端之间的tcp数据包必然不匹配。您必须在站点,服务器和客户端上启用跟踪。
联系网络管理员,根据跟踪信息修复数据包问题。
<强>参考文献:强>
Tracing Error Information for Oracle Net Services
获取ORA-12569:TNS:尝试通过客户端连接时数据包校验和失败。 (文件ID 257793.1)