当前位置:Linux教程 - Linux - PostgreSQL ODBC 驱动

PostgreSQL ODBC 驱动



         Advanced Options (Driver) 对话框

    DEFAULTS: 按这个按钮恢复下面描述的选项的通常的缺省设置。
    Disable Genetic Optimizer: 在联接时自动关闭后端的基因优化器。这样做要比在联接设置里面键入要方便一些。这个特性是我们发现后端在优化一些查询有很大问题时增加的。
    KSQO (Keyset Query Optimization): 这个特性帮助某些查询在后端上运行不会令之崩溃。有些应用,尤其是 MS Jet Database Engine,使用下面样子的 \"keyset\" (键集)查询:
    select...where (a = 1 AND b = 1 AND c = 1) OR (a=1 AND b=1 AND c = 2)...

    没有 KSQO 特性时,这样的查询几乎总是导致后端崩溃。
    CommLog (C:\\psqlodbc.log): 把与后端往复的日志记录在该文件中。这样对调试问题很有帮助。
    Recognize Unique Indexes: 这个选项控制 SQLStatistics() 对唯一索引返回什么东西。缺省时它是选除的。这个设置允许 Access 95 和 97 在联接时询问用户该索引是什么样的。这意味着在后端可以更规范地处理 Microsoft Access 查询之前的一个补救的办法。对于一些应用(例如,Access 2.0),你必须为更新表设置这个选项。(译注:现在7.0不用了)
    ReadOnly (default): 新数据源将继承这个选框的的状态,就是数据源是只读的。
    Use Declare/Fetch: 如果为真(缺省),驱动自动使用 declare cursor/fetch 来操作 SELECT 语句,并且在一个缓冲区里保存 100 行。这样有很大的好处,尤其是如果你只对读取数据感兴趣而不对更新感兴趣。结果是驱动不会消耗很多内存以缓冲整个结果集。如果选除(设为假),就不使用游标,而驱动将检索整个结果集。对于非常大的表而言,这样做将非常低效,并且将用尽所有Windows 的存储器/资源。不过,这样将令 \"updates\" 更高效,因为表不用象使用游标那样保持打开。这是老的 podbc32 驱动的风格。不过,存储器分配的性能现在已经极大地改进了,所以即使不使用游标,性能也至少比老的 podbc32 驱动要好。

    Parse Statements: 如果选中,驱动器将分析 SQL 查询语句以标识字段和表,并且收集它们的关于 precision(精度),nullability(可否为空), aliases(别名)等的信息。然后把这些信息放在给 SQLDescribeCol, SQLColAttributes 和 SQLNumResultCols。 在 Postgres 6.4 以前,这是从一个查询结果集里获取精度信息的唯一准确的方法。
    如果分析器不能处理某列(因为那是一个函数或者一个表达式等。),它将退回到原来的语句执行。分析器非常复杂,可以处理好多事情,象字段和表别名,引用标识,字串文本,联合,交集等。它可以正确地识别一个函数或者表达式字段,不管该字段有多复杂,不过它不会试图分析这些字段的数据类型或精度。

    Unknown Sizes: 这个选项控制当精度未知时 SQLDescribeCol 和 SQLColAttributes 为结果集里字符数据类型(varchar,text 和未知)返回什么东西做为精度。这个主要是为 6.4 版本前的不能返回已定义的 varchar 数据类型宽度的 Postgres 用的。

    Maximum: 总是返回数据类型的最大精度。
    Dont Know: 返回 \"Dont Know\" 值并让应用决定其长度。
    Longest: 返回所有行中该字段最长的字串长度。当使用游标时请注意这个设置,因为缓冲区大小可能不是缓存里最长的字段的最佳表示。

    MS ACCESS: 好象能正确处理 Maximum,还有所有其他的选项。
    Borland: 如果尺寸很大而且有许多字段,如果使用 Maximum 尺寸 Borland 可能会死得很难看(看起来好象它不能正确处理存储器分配)。

    Data Type Options: 影响一些数据类型的映射:

    Text as LongVarChar: Postgres TEXT 类型映射为SQLLongVarchar,否则是 SQLVarchar。
    Unknowns as LongVarChar: 未知类型(数组等)映射为 SQLLongVarChar,否则是 SQLVarchar。
    Bools as Char: Bool 被映射为 SQL_CHAR,否则是 SQL_BIT。
    Cache Size: 当使用游标时,这是记录缓存的行数。如果不使用游标,这是为多少条记录分配内存。缺省是两种情况都是 100 行。

    Max Varchar: Varchar 和 BPChar(char[x]) 类型的最大精度。缺省是 254,实际上是 255,因为有空结束符。注意,如果你把这个值设置高于 254, Access 将不能让你在 varchar 字段上建索引!

    Max LongVarChar: LongVarChar 类型的最大精度。缺省是 4094,实际上是4095,因为有空结束符。你甚至可以为这个尺寸设置(-4),这是 odbc SQL_NO_TOTAL 值。

    SysTable Prefixes: 当作系统表的表名的附加前缀。驱动器已经把以 \"pg_\" 开头的表当作系统表看待。这样你可以增加附加的表,比如数据目录表 (dd_)。用分号(;)分隔每个前缀。

    Connect Settings: 这些命令在成功联接后将发送给后端。用分号分隔这些命令。这个选项现在可以处理任何查询,甚至是返回结果的查询。不过结果将被丢弃!


    Advanced Options ( 或 Connection) 对话框

    ReadOnly: 数据源是否允许更新。对于新数据源,缺省值来自 Advanced Options (Driver) 对话框。
    Connect Settings: 在成功联接后,驱动把这些命令发送给后端。它在发送完驱动 \"Connect Settings\" 后才发送这些命令。使用分号(;)分隔命令。这个选项现在可以处理任何查询,甚至是返回结果的查询。不过结果将被丢弃!
    Row Versioning: 允许应用检测在你试图更新一行时,是否有其他用户修改该行数据。它还加速了更新过程,因为更新行时不必在 where 子句里面声明每个字段。驱动需要 Postgres 的 \"xmin\" 系统域以允许行版本。好象 Microsoft 的产品用这个选项用得很好,参阅 faq 获取关于如何配置你的数据库才能允许使用行版本特性的细节信息。
    Show System Tables: 驱动在 SQLTables 里将把系统表当作普通表对待。对于 Access 很有用,这样你可以看到系统表。

    OID Options:
    Show Column - 在 SQLColumns 里包括 OID。如果没有好的键字存在,这样可以做为一个很好的唯一表示用来更新记录,或者是存在键字但是键字由很多部分组成--因而把后端搞坏了。
    Fake Index - 这个选项在 OID 上伪装一个唯一索引。这样做在不存在真正 OID 上的唯一索引时以及不能询问唯一标识是何物的应用有好处(比如,Access 2.0)。

    Protocol:
    6.2:强制驱动使用 Postgres 6.2 协议,该协议有不同的字节序,协议和其他语义。
    6.3:使用 6.3 协议,这个协议与 6.3 和 6.4 后端兼容。
    6.4:使用 6.4 协议。这个协议只与 6.4 后端兼容。

    发布人:Crystal 来自:中国linux论坛