問題タブ [oracle-manageddataaccess]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
173 参照

.net - IIS にデプロイされたときに Lightswitch アプリケーションが「Oracle.ManagedDataAccessDTC」を見つけられない

Visual Studio 2013 でカスタム コードを使用せずに基本的な HTML Lightswitch アプリケーションを作成しました。これは Oracle データベースに接続し、ローカルで正常に動作します。

IIS を使用してアプリをサーバーにデプロイし、作成した URL に移動するとアプリが読み込まれますが、アプリが Oracle データベースから値のリストを通常表示する前に、「基になるプロバイダーが EnlistTransaction で失敗しました」というエラーが表示されます。

次のエラーを見つけるためにスタックトレースを実行しました。アプリが Oracle データ アクセス クライアント (Oracle.ManagedDataAccessDTC) を検出していないようです。

Oracle.ManagedDataAccessDTC を含む ODAC 12c リリース 4(12.1.0.2) インストーラーを使用して、自分のマシンに Oracle Data Access クライアントをローカルにインストールしました。

私のマシンとサーバーに同じバージョンの Oracle.ManagedDataAccessDTC がインストールされていることを確認しました。

0 投票する
1 に答える
202 参照

asp.net - Windows ユーザー名が Oracle DB に渡されていませんか?

Oracle ManagedDataAccess ドライバーを使用して、.NET Web アプリケーションからデータベースにアクセスしています。Windows ユーザー x として IIS Express でローカルに実行すると問題なく動作しますが、IIS を使用してサイトを別のサーバーに公開するとエラーが発生します

ORA-01017: ユーザー名/パスワードが無効です。ログインが拒否されました

ここで概説されているように、Oracle から試行されたログインを確認しました。IIS からのログインに成功した場合、自分の Windows ユーザー名 OPS$(USERNAME) が表示されます。

興味深いことに、IIS からログインに失敗すると、間違ったユーザー名が渡されていることがわかります - Username = OPS$(NAME_OF_MY_WEB_APPLICATION)。アプリケーションの名前をユーザー名として置き換えるという考えがどこから得られているのか、私にはわかりません。

私の接続文字列は両方の環境で同じです: User ID=/ ;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP))(HOST=...(PORT=1521)(CONNECT_DATA=(SERVICE_NAME=... )));

0 投票する
1 に答える
4482 参照

c# - Oracle への接続が実行されるときの「セキュリティ パッケージで使用できる資格情報がありません」

Oracle データベースへの接続を開始するテストは、前回の Windows 更新後に AuthenticationException で失敗します。メッセージとスタック トレースを以下に示します。

VS テスト ランナーまたはコマンド ラインから mstest を使用してテストを実行すると、例外がスローされます。Visual Studio の Oracle データベース ツールは、同じ例外をスローします。
アプリケーションでは、Oracle ManagedDataAccess プロバイダーが使用されます。パッケージのバージョンは 12.1.2400 です。
OS: Windows 10 Pro x64
IIS にローカルで公開されたアプリケーションは問題なく動作します。データベース接続に問題はありません。
これを修正する方法を知っている人はいますか?

前もって感謝します!

0 投票する
2 に答える
4555 参照

.net - Entity Framework 6でTNSエイリアスを使用してOracle DBに接続するには?

私のセットアップでは、Visual Studio 2015 で構築された .NET アプリケーションがあり、Entity Framework 6 を使用して Oracle 12c データベースのデータにアクセスしようとしています。

これを達成するために私がしたことは次のとおりです。

  • nuget を使用してOfficial Oracle ODP.NET、マネージド エンティティ フレームワーク ドライバー、およびその依存関係をインストールする方法について、oracle.com のチュートリアルに従いました。
  • tnsnames.ora と sqlnet.ora が見つかることを確認しました。(環境変数 TNS_ADMIN が正しく構成されている)
  • ここで実際に何が起こっているかを確認するために、Oracle ドライバーのトレース ログを有効にしました。
  • いくつかのエンティティをマップする EDMX ファイルを作成しました (これには、以下で説明する回避策が既に必要です)

これが私の App.config の外観です (読みやすくするために導入された改行):

データベースにアクセスしようとすると、これは例外で失敗します:

"ORA-12533: Netzwerksession: Syntaxfehler bei Verbindungstransportadresse"

オラクルのドキュメントによると、これは次のように変換されます

"ORA-12533: TNS: 無効な ADDRESS パラメータ"

トレース ログは、tnsnames.ora が正しく解決されたことを示しています。

TNS 名の代わりに IP アドレスとポートを使用すると、接続は正常に機能します。しかし、tnsnames.ora は当社のデータベース管理者によって管理されるため、IP アドレスを使用してサーバーのアドレスを指定することはできません。

また、古いドライバ (Oracle.DataAccess.dll など) は、この設定を使用してデータベースにアクセスしても問題ありません。

編集:私が現在使用している tnsnames.ora ファイルは次のとおりです。

ここで何が間違っていますか?

注: これに似た質問があります。ただし、その場合に役立つ解決策はここでは役に立ちませんでした。そこで発生した例外は、ここで発生したものとは異なります。

0 投票する
4 に答える
5348 参照

c# - シーケンスを使用してEntity Frameworkを使用してOracleにID値を挿入する方法

数値として定義された ID 列を持つ Oracle データベースでは、次のようになります。

ここに画像の説明を入力

...およびテーブルの対応するシーケンス...:

ここに画像の説明を入力

ID 列がシーケンスの次の値を取得するようにするにはどうすればよいですか?

最新の Oracle.ManagedDataAccess と Oracle.ManagedDataAccess.EntityFramework + EF6x を使用しています。

0 投票する
2 に答える
5264 参照

c# - C# で Entity Framework を使用して Oracle データ接続を読み取る

Oracle データベース 11g があり、Entity Framework を使用してそこからデータを読み取りたいと考えています。最初のステップでは、データベース接続を確立し、接続されている場合はステータスを取得しようとしています。ただし、次のエラーが発生します。

私の接続文字列は次のとおりです。

ここでコードをテストしようとしていますが、エラーが発生しています

基本 DBContext クラス

DbContext クラス

モデルクラス

TNSが機能している他のプロジェクトで

Visual Studio のデータ プロパティから接続文字列をコピーし、.NET Framework Data Provider for Oracle を使用します。

0 投票する
1 に答える
1088 参照

c# - データベースのOracle TIMESTAMP(0) WITH TIME ZONE値を更新する適切な方法

タイプ の列を持つテーブルを更新しようとしていますTIMESTAMP(0) WITH TIMEZONE

データベースへの書き込み方法には米国東部時間のTIMESTAMPようなオフセット形式がないため、いくつかの方法を試しましたが成功しませんでした。-05:00タイム ゾーンとして使用して保存AMERICA/NEW_YORKされるため、これを適切に処理できない別のアプリケーションで問題が発生します。

現在:28-NOV-16 10.51.43.000000000 AM AMERICA/NEW_YORK

望ましい:28-NOV-16 10.51.43.000000000 AM -05:00

ここでの多くの投稿は、主にデータベースからデータを取得する際のデータのフォーマットについて述べています。他の例は、C# ではなく SqlPlus で説明されています。

私も試しmodified_date=to_timestamp(:modified_date, 'MM/DD/YYYY HH:mi:ss')ましたが、これは適切にフォーマットされたタイムゾーンではないという例外を生成します。

C#でこれを達成する適切な方法は何ですか? 日付/タイムスタンプ列は常に文字列からの変換で書き込まれるべきですか?