TableAdapterにクエリを追加するとき、「単一の値を返すSELECT」を選択した場合、画面に表示されたSQL文を実行できません。正しいSQL文に修正してください。
名前付きパラメータのプレフィックスは、「@」を設定してください。
引用符(“) で囲んでも大文字のオブジェクト名を使用することはできません。
クエリビルダーではなく、[SQLステートメントの入力]画面で、引用符(“) で囲んだ大文字のオブジェクト名を含むSQL文を入力して使用してください。
以下のSQL文をFilterに指定して正しいSQL文を生成できません。
PostgreSQLの固有演算子(<<、:: など)を使ったSQL文
「AS、FROM、IN、OVER」などのキーワードがある関数を使ったSQL文
例: extract(field from timestamp)、RANK( ) OVER
SQL規約に規定されている関数と関数名は同じであるが、引数の異なる関数を使ったSQL文
一時テーブルは表示されません。
GetSchemaTableでメタデータを取得する前にExecuteReaderメソッドを実行する場合、ExecuteReaderメソッドの引数にCommandBehavior.KeyInfoを指定する必要があります。
例
NpgsqlDataReader ndr=cmd.ExecuteReader(CommandBehavior.KeyInfo); DataTable dt = dr.GetSchemaTable();
以下の更新不可能な問合せを含むSQL文に対し、更新系のSQL文が生成され、そのSQL文が実行できない場合があります。
導出表を含む問合せ
選択リストに同じ列名を含む問合せ
更新系SQL文は以下の場合に自動生成されます。
NpgsqlCommandBuilderで更新文を取得
NpgsqlDataAdapterでデータ更新を実行
TableAdapterでデータ更新を実行
分散トランザクションに関する注意事項
トランザクションスコープを利用するアプリケーションは、Microsoft Distributed Transaction Coordinator(MSDTC)と連携することで、分散トランザクションとして動作することができます。この場合、以下の注意が必要です。
データベースサーバに同時接続する各トランザクションに対して「PREPARE TRANSACTION」を発行できるようにするため、max_prepared_transactionsパラメータの値をmax_connectionパラメータの値より大きくしてください。
トランザクションスコープ内の各トランザクションが、別々のコネクションを使って同じ資源にアクセスすると、データベースサーバでは異なるアプリケーションから要求があるように見え、デッドロックが発生する可能性がありますので注意してください。あらかじめトランザクションスコープにタイムアウト値を設定しておけば、デッドロックを解除することができます。