問題タブ [ingres]
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.
sql - 埋め込み SQL の UNION 句
私は ingres 10S SQL を使用しており、埋め込み SQL C プログラムで次の SQL ステートメントを記述しようとしています。スタンドアロンの SQL スクリプトとしては問題なく動作しますが、eSQL プログラムをコンパイルするとエラーが発生します。
%% Error in file localtask.sc, Line 498: E_EQ0244 Syntax error on 'union'.
(行 498は行です) その句UNION
の何が問題になっていますか?UNION
ssis - SSIS 経由の Ingres 接続で LOCKMODE SESSION WHERE LEVEL = MVCC を設定する方法
SSIS から MVCC セッションに参加する方法についてアドバイスをいただけますか?
Ingres DB から読み取ると、MVCC を有効にし、SSIS 2008 R2 パッケージ内から分離レベルを指定する必要があります。
このデータベースには、MVCC を使用しない既存のアプリケーションが存在するため、既存の DBMS で単純に MVCC を有効にすることは適切ではありません。読み取りを MVCC に登録する理由は、ロックを引き起こしてこの既存のアプリケーションを壊さないようにするためです (これらの読み取りを実行するために MVCC を使用しない場合に現在定期的に発生しているように)。
DBのバージョンはIngres II 10.0.0 (su9.us5/132)
ADO.NET ドライバーのバージョンはIngres.Client.IngresConnection, Ingres.Client, Version=2.1.0.0
ドライバー、
Tibco BusinessWorks 内からプログラムで、また SQL Squirrel などを介してインタラクティブに行うという同様の要件があり、SQL の直接実行 (JDBC 経由) を介して次のコマンドを発行することで、このニーズを満たします。
IsolationLevel
SSIS では、タスク/シーケンスのプロパティを使用してセッション分離レベルを設定できます。しかし、MVCC コマンドを直接発行する手段が見つかりません。
ステップ経由でコマンドを発行しようとしExceute SQL Task
ましたが、次のエラーが発生しました。
行 1 の構文エラーです。最後に読み取られたシンボルは次のとおりです: 'SET LOCKMODE'
私が試したこと、無駄に:
- 終了の有無にかかわらず
;
- シーケンス内またはシーケンス外に配置された実行ステップ
DelayValidation
シーケンス レベルとステップ レベルの両方でプロパティを有効にしましたTransactionOption
シーケンスおよびタスクレベルでのさまざまな設定 (重要な場合に備えて!)- Windows 環境変数を介して lockmode を設定します
ING_SET = "SET LOCKMODE SESSION WHERE LEVEL = MVCC"
。しかし、私のテストでは、これはSSIS で使用している ADO.NET ドライバーでは受け入れられないことが示されています (ちなみに、SQL Squirrel または Tibco で使用している JDBC ドライバーでも受け入れられません)。これはおそらく ODBC の機能だと思います。 - データフロー内の ADO.NET ソース ステップ内からコマンドを発行する。同じ構文エラー。
- [UPDATE]
SET ...
Ingres プロシージャでコマンドをラップすることも試みましたが、SET ...
コマンドがプロシージャ内のどこでも有効ではないことを示す構文エラーが発生しました。
SSIS から MVCC セッションに参加する方法についてアドバイスをいただけますか?
この段階では (私は信じています)、ADO.NET ドライバーに制限されていますが、ODBC を使用する他のオプションがない場合は、そうする必要があります。
sql - Ingres - クエリ "WHERE tid IN (...)" は、リスト内の最小値を無視します
システムで、次のような SQL クエリを見つけました。
実際の数値は別の場所から取得されますが、クエリの最後に常に -1 を追加するので、削除してみました。システムが壊れた理由を調査した後、問題をデータベースに絞り込みました。
in-list に複数の要素がある場合、Ingres はそれらの最小のものを無視しているようです。tid でクエリを実行する場合にのみ発生し、他の列では発生しません。また、それがリストに含まれている場合でも複数の OR の場合でも、最小値は常に無視されます。最後に、この SELECT でのみこのように動作します。DELETE では問題なく動作します。
Ingresがそれをしている理由は何か分かりますか?
stored-procedures - ストアド プロシージャで使用できる「ALTER SEQUENCE」に相当
ID のリストを取得し、最初のセットとは関係のない新しい ID のセットを作成できるストアド プロシージャを Ingres で作成する必要があります (ただし、各ペアを保存する場所)。
私の最初の計画は、random() でソートし、シーケンスを使用して各行に 100000 から単純に番号を付け、これらの結果をテーブルに保存することでした。これはほとんど機能します。ただし、ALTER SEQUENCE はストアド プロシージャ内で使用できないため、新しい ID が常に 100000 から始まることを保証する方法がありません。
ストアド プロシージャ内からシーケンスをリセットする方法、またはシーケンスのストアド プロシージャのみのインスタンスを作成する方法はありますか?
それができない場合、シーケンスを使用しない Ingres で増分番号を生成する方法はありますか?
delphi - Firedac ODBC および Ingres データベース - 「現在の状態では API 関数を呼び出すことができません」
Delphi Firedac (ODBC) による Ingres データベースからのデータの読み取りに問題があります。Ingres データベースに接続できます (例外はスローされません) が、FDQuery でデータを読み込もうとすると、次のようになります。
同じ接続文字列と dbExpress(ODBC) を使用すると、SQL ステートメントによるデータの読み取りに問題はありません。
dbExpress の方がはるかに単純であり、Firedac が ODBC ドライバーでさらに何かを読み取ったり設定したりしようとすると、問題が発生する可能性があります。Embarcadero Quality Portal https://quality.embarcadero.com/browse/RSP-11536で問題を報告しましたが、応答がありません
IngresデータベースとFiredacを操作できるようにするために何をすべきかを誰かが知っているかもしれません
delphi - Firedac + Ingres が QEP を取得
Ingresデータベースから ODBC を介してFiredac から QEP (クエリ実行計画) 出力を取得する方法はありますか? 私は試した
しかし、私はQEPについて何も知りませんでした。アプリケーションで必要です
UPDATE1 Actian と話し合った後、環境変数を設定する必要があります。
これはdbExpresで機能することがわかりましたが、何らかの理由で Firedac では機能しませんか?