Home > C# > PostgreSQL > Npgsqlドキュメント(2014年7月25日・13改訂版)

接続文字列パラメータ

作成日 2015.03.05
最終更新日 2015.03.05

概要

PostgreSQLデータベース・サーバのための、.NET データ・プロバイダNpgsqlのドキュメント(2014年7月25日・13改訂版)の和訳です。 旧版ドキュメント(外部サイト) の和訳は存在しましたが、現行版のドキュメントのものは見つからなかったので和訳しました。 PostgreSQLとC#の両方を学ぶための資料集めの一環としての作成しています。

原文

npgsqlマニュアル(2014年7月25日・13改訂版)(外部サイト)

公式ページのドキュメントです。英語で書かれています。

注意

このドキュメントは、過去のNpgsqlのバージョンのドキュメントです。より新しいドキュメントは、「接続文字列パラメータ Npgsql」をご覧ください。

接続文字列パラメータ Connection String parameters

接続を確立するとき、NpgsqlConnectionは、その動作を変更する多くのパラメータを受け取ります。 ここに、あなたが微調整することができる、現在のパラメータのリストがあります。

  • Server
  • PostgreSQLサーバのAddress/Name

  • Port
  • 接続するPort

  • Protocol
  • 自動の代わりに、使用するProtocolバージョン;整数2または3

  • Database
  • データベース名。User Idを指定しない場合、既定の設定で実行するユーザー名。

  • User Id
  • ユーザー名

  • Integrated Security
  • Windowsの統合セキュリティを利用するために設定します。Default=false

  • Password
  • クリアテキスト認証のためのパスワード

  • SSL
  • Trueまたはfalse。安全な接続を試みるべきかどうかを制御します。Default = False

  • ApplicationName
  • アプリケーション名は、pg_stat_activityのこの接続に対して表示されるでしょう。

  • Pooling
  • Trueまたはfalse。接続プーリングが使用されるかどうかを制御します。Default = True

  • MinPoolSize
  • 接続プールの最小サイズ。最小プール・サイズが指定されたとき、 サーバで事前に指定された割り当てられた接続の数のNpgsqlConnectionを作成するでしょう。 Default 1

  • MaxPoolSize
  • 接続プールの最大サイズ。プールが、この接続の数よりも多く含まれている場合、 プールされた接続は、プールに返されるとき、破棄されるでしょう。Default: 20

  • Encoding
  • 用いられていません。常に、「Unicode」の文字列を返します。そして、静かに、それに設定する試みを無視します。

  • Timeout
  • 接続を開くために待機する時間の秒数。省略時設定は、15です。

  • CommandTimeout
  • コマンドを完了するための待つための時間は、例外を投げる前に実行します。数秒で。省略時設定は、20です。

  • Sslmode
    • SSL接続制御モード。以下の1つであることができます。:
    • Prefer
    • SLLを経由して接続することができる場合、SSLは使用されるでしょう。

    • Require
    • SSL接続が確立できない場合、例外が、投げられます。

    • Allow
    • まだサポートされていません。;SSLなしで接続します。

    • Disable
    • SSL接続を試みません。既定の値は、「disable」です。

  • ConnectionLifeTime
  • 数秒で、プール内の使っていない接続を閉じるのを待つための時間。省略時設定は、15です。

  • SyncNotification
  • Npgsqlが、同期通知を使うかどうか指定します。

  • SearchPath
  • 指定された、そして、publicスキーマーへの検索パスを変更します。

  • Preload Reader
    • 「true」に設定される場合、(省略時設定は「false」です)これは、ExecuteReaderが戻る前に、 それらが、完全に読み込まれるためにdatareadersが引き起こされます。
    • この結果は、より少ない性能をもたらします。(特に、きわめて大規模なレコードセットの場合、その場合、性能のレベルは、耐えられないかもしれません)、 しかし、Npgsqlの以前のバージョンの後方互換性の問題の特定の可能性をカバーするための選択肢として残されています。
    • ADO.NETドキュメンテーションによれば、IDataReaderが、それを取得するために、IDbConnectionを使用して開いている間 、「busy」です。そして、どんな他の操作も使用できません。(この規則に対するいくつかの文書化された例外を除く。 Npgsqlは、この規則を強制します。そして、それゆえ、NpgsqlDataReaderは、取得するためにNpgsqlConnectionを使用して、 ほとんどの他の操作を開きます。それは、InvalidOperationExceptionが結果として生じるでしょう。 (Npgsqlは、あなたが、接続を使うための規則を緩和します。NpgsqlDataReaderが、 そのresultset(s)を終わりまで読み込んだ場合、たとえ、それが閉じられていないとしても、 この時点では、その接続から、どんなリソースも、もはや使用していないので)。
    • しかしながら、以前に、Npgsqlは、ユーザーが、この規則を完全に無視できます。これは、完全に内部の実装問題の副作用でした。 そして、厳密に言うと、全くサポートされていませんでした。(それは、常に、ADO.NETの仕様に違反しているため) しかし、それは、あなたは、突然、以前に動作していたコードが壊れているのを見つけることで、少し快適になるでしょう。 それゆえ、あなたが、この変更に関する問題を見つけた場合、 あなたは、以前の動作に戻すために、この接続文字列の選択肢を使用することができます。
    • しかしながら、あなたが、それを使う場合、あなたは、それで、2つの理由のため、 問題となっているコードを修正するために、以前の穴埋めを行う必要があります。:
      • 性能と、特に、スケーラビリティは、この選択肢なしで、とても優れています。
      • あなたは、異なるデータプロバイダの拡張をサポートしたい、 どの点でも行うべきであれば、このようなコードは、失敗する可能性が高くなります。
  • 拡張型を使用する Use Extended Types
    • この選択肢は、DataAdaptorsが、.NET System.DateTime型やSystem.DateTimeの越える範囲に及ぶ機能を持つ、 NpgsqlTimeStampのようなNpgsql日付時間型を使用することを期待するかどうかに影響します。 どちらの選択肢でも、Npgsqlとシステム型の両方を使用できます。 しかし、「true」に設定される場合、DataAdaptorsは、問題となっているフィールドのための特定のNpgsql型を渡されることを期待することになります。 ところが、「false」に設定されている場合、System.DateTimeを期待することになります。
    • この選択肢は実験的です。そして、うまくいけば、以後のリリースで、その影響は、低減や除去されます。
    • 省略時設定は、「false」です。
  • 互換性
    • このバージョンは、これまでより多く、より多くの接続文字列の選択肢を追加するために、 壊れている変更をより簡単なメソッドとして、取り扱うことを意図されます。それは、バージョン番号(a.b[.c[.d]])の形の単一の値を取得します。 重要なバージョン番号の動作をコピーし、可能な場合、 破壊する可能性がある既存のコードを変更します。最初の、このようなバージョンは、2.0.2.1です。 それで、「2.0.2」の値は、その新しいふるまいをしません。
    • バージョン2.0.2
    • 動作するフィールドの名前が見つからない場合、GetOrdinalは-1を返すでしょう。GetOrdinalは、カナの幅に敏感です。

    • バージョン2.0.2.1
    • GetOrdinalは、フィールドの名前が見つからない場合、IndexOutOfRangeExceptionを投げるでしょう。 GetOrdinalは、カナの幅に鈍感です。

このエントリーをはてなブックマークに追加

Home PC C# Illustration

Copyright (C) 2011 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」