Oracle 10gデータベースに接続するC#アプリケーションを作成しました。 Oracle Data Access Component 11.2「ODAC」を使用すると、私のマシンで完全に動作します。
次に、アプリケーションをデプロイして、.NET Frameworkのみを備えた別の「クリーンマシン」にインストールしたいと思います。そして、ODACコンポーネント全体をユーザーにインストールしたくありません。
どうすればできますか?次のように、必要なすべてのDLLファイルをbinフォルダに含めようとしました。
しかし、それでもうまくいきませんでした。この問題を解決するにはどうすればよいですか?
最大50 MBのODACのインストールに加えてOracleクライアントをインストールする必要があるのか、スタンドアロンのODACだけをインストールする必要があるのか、私にはわかりません。
OracleクライアントとODACをインストールする必要がある場合は、 Oracle Instant Client ?を使用できます。これは、Oracleクライアントをインストールするための最小のフットプリント方式です。 ODAC xcopyサプリメントも必要です。
あなたの懸念がODACのインストールだけである場合、私は利用可能なより小さなフットプリントがあるとは思いません。
Oracleクライアントを個別にインストールする必要はありません。 .exeと同じディレクトリに以下をインストールしました。
Oracle.DataAccess.dll
oci.dll
OraOps11w.dll
oraociei11.dll
msvcr71.dll
プロジェクトが、提供しているものと同じOracle.DataAccess.dllを参照していることを確認してください。これは、Oracleクライアントがインストールされていなかった新しいPCで動作しました。
このような接続文字列を指定することで、TNSNAMES.oraの使用を避けました
connectionstring = Data Source = "(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(Host =)(PORT =)))" + "(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME =)))" "
TNSNAMES.oraを使用している場合は、接続の詳細を1行の文字列にカットアンドペーストするだけです。
参照 C#をOracleデータベースに接続するために必要な最小クライアントフットプリントは何ですか?
詳細については。
上記のdllを取得する方法については、次のチュートリアルを参照してください。 http://begeeben.wordpress.com/2012/08/01/accessing-Oracle-database-without-installing-Oracle-client/ =
この質問が投稿されたため、Oracle Managed Clientが利用可能になりました(Oracle提供)。問題なく使用しています。 DLLや特別な構成を探す必要はありません。パッケージを追加し、構成ファイルを変更するだけで準備完了です。 NuGet Link および 記事 それについてのOracleによる。
このクライアントは完全に.NETマネージコードで記述されているため、アーキテクチャに依存せず、外部DLLやOracleクライアントのインストールなどは必要ありません。
パッケージマネージャーを使用してVSにインストールできます。
Install-Package Oracle.ManagedDataAccess
これをmachine.configファイルに配置しました(web.configまたはapp.configでも機能します)。これにより、インストールされている他のドライバーとの競合を回避できることがわかりました。
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.DataAccess.Client" />
<remove invariant="Oracle.ManagedDataAccess.Client" />
<add name="ODP.NET, Managed Driver"
invariant="Oracle.ManagedDataAccess.Client"
description="Oracle Data Provider for .NET, Managed Driver"
type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
</DbProviderFactories>
</system.data>
<configuration>
次に、接続文字列について:
<add name="MyConnectionString" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=IPORNAMEOFHOST)(PORT=PORTNUM)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORACLESID)));User Id=ORACLEUSER;Password=ORACLEPASSWORD;" providerName="Oracle.ManagedDataAccess.Client"/>