TableAdapterにクエリを追加するとき、「単一の値を返すSELECT」を選択した場合、画面に表示されたSQL文を実行できません。正しいSQL文に修正してください。
同じ名前のFunctionが2つ以上ある場合、そのFunctionでTableAdapterを作成できません。
Functionを定義する場合、OUT型のパラメータを最後に定義してください。
OUT型のパラメータを先頭や途中に定義した場合、TableAdapterのDataPreviewにおいて、OUT型のパラメータより後ろのパラメータに値を入力できません。
誤った例:func(out p1 integer, inout p2 integer)
正しい例:func(inout p2 integer, out p1 integer)
名前付きパラメータのプレフィックスは、「@」を設定してください。
大文字のデータベースオブジェクト名(スキーマ名、テーブル名、カラム名など)に対して、クエリビルダでSQL文を生成できません。(例:テーブル名“TABLE”)
日時データ型の定数を使ったSQL文をクエリビルダで正しく生成できません。
以下のSQL文をFilterに指定して正しいSQL文を生成できません。
PostgreSQLの固有演算子(<<、:: など)を使ったSQL文
「AS、FROM、IN、OVER」などのキーワードがある関数を使ったSQL文
例: extract(field from timestamp)、RANK( ) OVER
SQL規約に規定されている関数と関数名は同じであるが、引数の異なる関数を使ったSQL文
一時テーブルは表示されません。
データベースオブジェクトの関数(FUNCTION)はプロシージャとして表示されます。
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パラメータの値より大きくしてください。
トランザクションスコープ内の各トランザクションが、別々のコネクションを使って同じ資源にアクセスすると、データベースサーバでは異なるアプリケーションから要求があるように見え、デッドロックが発生する可能性がありますので注意してください。あらかじめトランザクションスコープにタイムアウト値を設定しておけば、デッドロックを解除することができます。