2

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 経由) を介して次のコマンドを発行することで、このニーズを満たします。

SET LOCKMODE SESSION WHERE LEVEL = MVCC;
SET SESSION ISOLATION LEVEL READ COMMITTED;    

IsolationLevelSSIS では、タスク/シーケンスのプロパティを使用してセッション分離レベルを設定できます。しかし、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 を使用する他のオプションがない場合は、そうする必要があります。

4

2 に答える 2