1

次のコードを使用して、ネットワーク上のすべての SQL Server インスタンスを列挙できることを知っています。

 SqlDataSourceEnumerator instance = SqlDataSourceEnumerator.Instance;
 DataTable table = instance.GetDataSources(); 

しかし、Oracle インスタンスに対してもこれを行う方法があるかどうか疑問に思っていました。Oracle の ODP.NET (Oracle.DataAccess.Client) は DataSourceEnuerator をサポートしていますが、明らかに System.Data.OracleClient はサポートしていません。ただし、DataSourceEnumerator は、ローカルの TNSNames.ora ファイルにあるエントリのみを列挙します。

4

1 に答える 1

3

表示されているのは、SQLServerデータベースとOracleデータベースのアナウンス方法の根本的な違いによるものです。SQL Server(少なくとも2000および2005)は、SQLブラウザサービスを使用して、ネットワーク上で利用可能なデータベースをアドバタイズします。一方、Oracleでは、TNSエントリを使用して使用可能なインスタンスを明示的に列挙する必要があります。

これは、OracleがAPIに従おうとしているWheninRomeのインスタンスです。残念ながら、カスタムコードがないと、SQLServerの動作を複製できません。

于 2012-07-07T16:58:21.747 に答える