0

Ingres 用の ODBC ドライバーを介して Ingres データベースから読み取る SSIS 2008 データ ソース ビューを作成しようとしています。Ingres 10 Community Edition をダウンロードして ODBC ドライバーを取得し、インストールして、データ アクセス サーバーと DSN を SSIS を実行しているサーバーにセットアップしました。

SSIS を実行しているサーバーで SQL Server 2008 データベース エンジンに接続すると、次のコマンドを実行して、ODBC DSN 経由で Ingres からデータを取得できます。

SELECT *
FROM OPENROWSET( 'MSDASQL'
               , 'DSN=IngresODBC;UID=testuser;PWD=testpass'
               , 'SELECT * FROM iitables')

したがって、ODBC の設定が正しいことは確かです。

Ingres はこの構文をサポートしていないため、SQL Server スタイルの括弧で囲まれた識別子の引用符を使用して同じクエリを実行しようとすると、エラーが発生します。

SELECT *
FROM OPENROWSET( 'MSDASQL'
               , 'DSN=IngresODBC;UID=testuser;PWD=testpass'
               , 'SELECT * FROM [iitables]')

エラーは「[Ingres][Ingres 10.0 ODBC Driver][Ingres 10.0]line 1, Unexpected character '['.」です。

私が見つけたのは、Ingres から SSIS データ ソース ビューにテーブルを追加しようとすると、同じエラーが発生することです。ODBC プロバイダーを選択する最初のステップは正常に機能し、追加するテーブル/ビューのリストが表示されます。次に、任意のテーブルを選択してビューに追加しようとすると、「エラー [5000A] [Ingres][Ingres 10.0 ODBC Driver][Ingres 10.0]line 3, Unexpected character '['.」」が表示されます。

名前付きクエリを作成するという Ed Harper の提案に従うことも妨げられているようです。名前付きクエリに次のテキストを入力すると:

SELECT *
FROM "iitables"

「エラー [5000A] [Ingres][Ingres 10.0 ODBC Driver][Ingres 10.0]line 2, Unexpected character '['」」というエラーが表示されます。

エラーによると、SSIS から ODBC に渡されたクエリ テキストは次のとおりです。

SELECT [iitables].*
FROM 
(
SELECT *
FROM "iitables"
)
 AS [iitables]

SSIS は、ブラケット引用文字が受け入れられない場合でも受け入れられると想定しているようです。それらを使用しないように説得するにはどうすればよいですか?二重引用符は受け入れられます。

4

1 に答える 1

0

引用された識別子を変更する方法はわかりませんが、テーブルを DSV に直接追加するのではなく、空白の DSV を作成する (テーブルを追加せずに DSV ウィザードをクリックする) ことで、これを回避できる場合があります。それらを名前付きクエリとして追加します (空の DSV を右クリックし、[新しい名前付きクエリ] を選択します。

これにより、クエリのテキストを自分で制御し、独自の識別子を設定できます。

(私は SSIS 2005 に基づいてこの提案をしていますが、2008 も同様の方法で機能すると思います。)

于 2010-04-23T08:15:19.870 に答える