我无法使用 OpenQuery 通过 C# 代码查询链接的 Oracle 服务器,但是我可以使用 4 部分名称或 OpenQuery 从 Sql Server 本身查询服务器。使用代码时出现以下错误:
System.Data.SqlClient.SqlException:链接服务器“LinkedServer”的 OLE DB 提供程序“OraOLEDB.Oracle”报告错误。提供商没有提供有关该错误的任何信息。无法为链接服务器“LinkedServer”初始化 OLE DB 提供程序“OraOLEDB.Oracle”的数据源对象。在 System.Data.SqlClient.SqlConnection.OnError(SqlException 异常,布尔 breakConnection) 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) 在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream , BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 在 System.Data.SqlClient.SqlDataReader.ConsumeMetaData() 在 System.Data.SqlClient.SqlDataReader.get_MetaData() 在 System.Data。
我的代码如下所示:
testCommand = "SELECT * FROM OPENQUERY(LinkedServer,'SELECT * FROM HR.REGION')";
SqlCommand cmdTest = new SqlCommand();
cmdTest.Connection = conn1;
cmdTest.CommandText = testCommand;
cmdTest.CommandType = System.Data.CommandType.Text;
conn1.Open();
SqlDataReader testdr = cmdTest.ExecuteReader();
string values = null;
if (testdr.HasRows == true)
{
while (testdr.Read())
{
values = values + testdr["REGION_FIELD"].ToString();
}
}