OpenQuery を使用して C# コードからリンクされた Oracle サーバーにクエリを実行できませんが、4 部構成の名前または OpenQuery を使用して、Sql サーバー自体からサーバーにクエリを実行できます。コードを使用すると、次のエラーが発生します。
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();
}
}