問題タブ [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.
.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 がインストールされていることを確認しました。
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=... )));
c# - Oracle への接続が実行されるときの「セキュリティ パッケージで使用できる資格情報がありません」
Oracle データベースへの接続を開始するテストは、前回の Windows 更新後に AuthenticationException で失敗します。メッセージとスタック トレースを以下に示します。
VS テスト ランナーまたはコマンド ラインから mstest を使用してテストを実行すると、例外がスローされます。Visual Studio の Oracle データベース ツールは、同じ例外をスローします。
アプリケーションでは、Oracle ManagedDataAccess プロバイダーが使用されます。パッケージのバージョンは 12.1.2400 です。
OS: Windows 10 Pro x64
IIS にローカルで公開されたアプリケーションは問題なく動作します。データベース接続に問題はありません。
これを修正する方法を知っている人はいますか?
前もって感謝します!
.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 ファイルは次のとおりです。
ここで何が間違っていますか?
注: これに似た質問があります。ただし、その場合に役立つ解決策はここでは役に立ちませんでした。そこで発生した例外は、ここで発生したものとは異なります。
c# - C# で Entity Framework を使用して Oracle データ接続を読み取る
Oracle データベース 11g があり、Entity Framework を使用してそこからデータを読み取りたいと考えています。最初のステップでは、データベース接続を確立し、接続されている場合はステータスを取得しようとしています。ただし、次のエラーが発生します。
私の接続文字列は次のとおりです。
ここでコードをテストしようとしていますが、エラーが発生しています
基本 DBContext クラス
DbContext クラス
モデルクラス
TNSが機能している他のプロジェクトで
Visual Studio のデータ プロパティから接続文字列をコピーし、.NET Framework Data Provider for Oracle を使用します。
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#でこれを達成する適切な方法は何ですか? 日付/タイムスタンプ列は常に文字列からの変換で書き込まれるべきですか?