Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - 数据库管理 » 管理数据库 » 数据库管理实用程序

 

数据源实用程序 (dbdsn)

创建、删除、说明和列出 SQL Anywhere ODBC 数据源。

语法
dbdsn [ modifier-options ]
   { -l[ s | u ]
   | -d[ s | u ] dsn
   | -g[ s | u ] dsn
   | -w[ s | u ] dsn [details-options;...]
   | -cl }
主选项 说明
@data

读取来自指定的环境变量或配置文件的选项。请参见使用配置文件

如果要保护口令或配置文件中的其它信息,可以使用文件隐藏实用程序对配置文件的内容进行模糊处理。请参见文件隐藏实用程序 (dbfhide)

-l[ s | u ] 列出可用的 SQL Anywhere ODBC 数据源。您可以使用 -b 或 -v 选项修改列表格式。在 Windows 中,可以使用 u(用户)或 s(系统)指定符来修改该选项。缺省指定符是 u
-d[ s | u ] dsn 删除指定的 SQL Anywhere 数据源。如果提供 -y,则删除任何现有数据源而无需确认。在 Windows 中,可以使用 u(用户)或 s(系统)指定符来修改该选项。缺省指定符是 u
-g[ s | u ] dsn 列出指定 SQL Anywhere 数据源的定义。您可以使用 -b 或 -v 选项修改输出的格式。在 Windows 中,可以使用 u(用户)或 s(系统)指定符来修改该选项。缺省指定符是 u
-w[ s | u ] dsn [ details-options ] 创建新数据源;如果存在同名的数据源,则覆盖它。如果提供 -y,则覆盖任何现有数据源而无需确认。在 Windows 中,可以使用 u(用户)或 s(系统)指定符来修改该选项。缺省指定符是 u
-cl

列出 dbdsn 实用程序支持的连接参数。请参见连接参数

有关支持的 ODBC 连接参数的信息,请参见ODBC 连接参数

修饰符选项 说明
-b 将列表的输出格式设置为单行连接字符串。
-cm

显示用来创建数据源的命令。此选项可用于将创建命令输出到一个文件中。可使用该创建命令将数据源添加到其它计算机,或者如果数据源有更改,也可用该命令将数据源恢复到其原始状态。您必须使用 -cm 指定 -g 选项或 -l 选项,否则命令将失败。指定 -g 会显示指定数据源的创建命令,而指定 -l 则会显示所有数据源的创建命令。

如果指定的数据源不存在,则会生成删除数据源的命令。例如,如果计算机上不存在 mydsn 数据源,则 dbdsn -cm -g mydsn 会返回下列命令来删除 mydsn 数据源:

dbdsn -y -du "mydsn"
-dr

显示数据源时包括 Driver 参数。在使用 -cm 选项重新创建数据源时,它允许当前版本的 dbdsn 创建那些引用另一个版本的 ODBC 驱动程序的数据源。

例如,假设您使用以下命令来创建版本 9 的数据源:

dbdsn -y -wu "9.0 Student Sample" -c "UID=DBA;PWD=sql;...;Driver=
Adaptive Server Anywhere 9.0"

执行 dbdsn -cm -l 时,dbdsn 列出不包括 Driver= 参数的相同命令,随后可使用 SQL Anywhere 版本 10.0 ODBC 驱动程序来重新创建 DSN。

但如果执行 dbdsn -dr -cm -l,Driver= 参数会包括在内,数据源会完全按照最初的创建方式重新创建:即使用版本 9 ODBC 驱动程序。

-f 显示所使用的系统文件的名称。此选项只能在 Unix 中使用。
-ns

指定用于确定系统信息文件(缺省情况下名为 .odbc.ini)位置的环境变量设置。如果在环境中存在多个候选系统信息文件,则此选项对于确定 dbdsn 正在使用哪个文件非常有用。此选项只能在 Unix 中使用。

如果在创建数据源时不指定 -ns,dbdsn 也会在用户主目录和路径中检查系统信息文件。

有关如何查找系统信息文件的详细信息,请参见在 Unix 上使用 ODBC 数据源

-o filename 将输出消息写入指定的文件中。
-or

用 -c 选项指定时,可创建 iAnywhere Solutions Oracle 驱动程序的数据源。例如:

dbdsn -w MyOracleDSN -or -c Userid=DBA;Password=sql;
SID=abcd;ArraySize=500;ProcResults=y

您可以指定 -cl 选项和 -or 选项,以获得 iAnywhere Solutions Oracle 驱动程序的连接参数列表。

有关详细信息,请参见iAnywhere Solutions Oracle 驱动程序

-pe 指定此选项且 DSN 中包括 PWD 条目时,将 PWD 条目中的密码加密,并将 PWD 条目替换为包含已加密密码的 ENP 条目。
-q 取消向数据库服务器消息窗口的输出。如果您在删除或修改数据源时指定 -q,则还必须指定 -y。
-v 将列表的输出格式设置为数行(即表格形式)。
-y 删除或覆盖每个数据源,而不提示您进行确认。如果您在删除或修改数据源时指定 -q,则还必须指定 -y。
细节选项 说明
-c "keyword=value;..." 将连接参数指定为连接字符串。请参见连接参数
-cw 确保 DBF 参数(使用 -c 指定)是一个绝对文件名。如果 DBF 的值不是绝对文件名,dbdsn 会在其前面添加当前工作目录 (CWD)。此选项十分有用,因为有些操作系统不会在批处理文件中自动提供 CWD 信息。
注释

修饰符选项可以出现在主选项设定之前或之后。

数据源实用程序是 ODBC 管理器的跨平台替代工具,用于创建、删除、说明和列出 SQL Anywhere ODBC 数据源。此实用程序对于批处理操作是很有用的。

小心

在数据源中存储用户 ID、口令(加密或未加密)和/或数据库密钥是不安全的。如果数据库包含敏感数据,建议您不要将此信息存储在数据源中。

在 Windows 操作系统中,数据源保存在注册表中。

有关使用 ODBC 管理器在 Windows 上创建数据源的信息,请参见创建 ODBC 数据源

在 Unix 操作系统中,数据源保存在系统信息文件中(缺省名为 .odbc.ini)。在 Unix 中使用数据源实用程序来创建或删除 SQL Anywhere ODBC 数据源时,该实用程序会自动更新系统信息文件的 [ODBC Data Sources] 段。如果在 Unix 中没有使用 -c 选项指定 Driver 连接参数,数据源实用程序会根据 SQLANY11 环境变量的设置自动添加一个带有 SQL Anywhere ODBC 驱动程序完整路径的 Driver 项。

有关系统信息文件的详细信息,请参见在 Unix 上使用 ODBC 数据源

小心

在 Unix 中不应使用文件隐藏实用程序 (dbfhide) 对系统信息文件 (.odbc.ini) 进行模糊处理,除非您将仅使用 SQL Anywhere 数据源。如果计划使用其它数据源(例如,为了 MobiLink 同步),则系统信息文件的模糊处理可能会妨碍其它驱动程序正常工作。

退出代码是零(成功)或非零(失败)。请参见软件组件的退出代码

ODBC 连接参数

数据源实用程序 (dbdsn) 支持下列 ODBC 连接参数。布尔型(true 或 false)参数为 true 时值为 YES 或 1,为 false 时值为 NO 或 0。

名称 说明
Delphi Delphi 不能处理一行的多个书签值。当您将此值设置为 NO 时,会为每行指派一个书签,而不是像其它情况下那样为每行指派两个书签。将此选项设置为 YES 可提高可滚动游标的性能。
DescribeCursor

此参数用于指定在某过程执行期间重新描述游标的频率。缺省设置为 [根据需要]。

  • 永不   如果认为不必重新描述游标,则指定 0、N 或 NO。重新描述游标代价较高并且会降低性能。

  • 根据需要   如果想要由 ODBC 驱动程序来确定是否重新描述游标,则指定 1、Y 或 YES。过程中的 RESULT 子句可避免 ODBC 应用程序在游标打开后重新描述结果集。这是缺省设置。

  • 始终   如果指定 2、A 或 ALWAYS,则每次打开游标时都会将其重新描述。如果使用 Transact-SQL 过程或者使用返回多个结果集的过程,则每次打开游标时都必须将其重新描述。

Description 此参数允许您提供 ODBC 数据源的说明。
Driver

此参数用于为连接指定一个 ODBC 驱动程序,方法如下:Driver=driver-name。缺省情况下使用的驱动程序是 SQL Anywhere 11driver-name 必须是 SQL Anywhere X,其中 X 是软件的主版本号。driver-name 如果不以 SQL Anywhere 开头,就不能被数据源实用程序 (dbdsn) 读取。

在 Unix 中,此参数指定共享对象的完全限定路径。如果在 Unix 中没有指定 Driver 连接参数,数据源实用程序会根据 SQLANY11 环境变量的设置自动添加一个带有 SQL Anywhere ODBC 驱动程序完整路径的 Driver 项。

GetTypeInfoChar 当此选项被设置为 YES 时,会返回 CHAR 列作为 SQL_CHAR(而不是 SQL_VARCHAR)。缺省情况下,会返回 CHAR 列作为 SQL_VARCHAR。
InitString InitString 允许您指定在建立连接后立即执行的命令。例如,您可能希望设置一个数据库选项或执行一个存储过程。
IsolationLevel

您可以指定下列值之一来设置数据源的初始隔离级别:

  • 0   这也称为读取未提交数据隔离级别。这是缺省隔离级别。它提供最大的并发级别,但结果集中会出现脏读、非可重复读取和幻像行。

  • 1   这也称为读取已提交的数据级别。它提供的并发级别低于级别 0,但消除了级别 0 时结果集中存在的一些不一致。可能会出现非可重复读取和幻像行,但禁止脏读。

  • 2   这也称为可重复读取级别。可能出现幻像行。禁止脏读和非可重复读取行。

  • 3   这也称为可序列化级别。这提供最低的并发级别,是最严格的隔离级别。禁止脏读、非可重复读取和幻像行。

  • 快照   必须为要使用此隔离级别的数据库启用快照隔离。快照隔离级别可以防止读取和写入操作之间的所有干扰。但写入操作之间仍可能会相互干扰。由于争用,可能会出现一些不一致的情况,但性能与隔离级别 0 相同。

  • 语句快照   必须为要使用此隔离级别的数据库启用快照隔离。快照隔离级别可以防止读取和写入操作之间的所有干扰。但写入操作之间仍可能会相互干扰。由于争用,可能会出现一些不一致的情况,但性能与隔离级别 0 相同。

  • 只读语句快照   这也称为隔离级别。必须为要使用此隔离级别的数据库启用快照隔离。快照隔离级别可以防止读取和写入操作之间的所有干扰。但写入操作之间仍可能会相互干扰。由于争用,可能会出现一些不一致的情况,但性能与隔离级别 0 相同。

有关详细信息,请参见选择隔离级别

KeysInSQLStatistics 如果希望 SQLStatistics 函数返回外键,则指定 YES。ODBC 说明指出 SQLStatistics 不应当返回主键和外键;但是,某些 Microsoft 应用程序(例如 Visual Basic 和 Access)假定主键和外键是由 SQLStatistics 返回的。
LazyAutocommit 将此参数设置为 YES 会延迟提交操作直到语句关闭。
PrefetchOnOpen 当 PrefetchOnOpen 被设置为 YES 时,预取请求随游标打开请求一起发送。预取可使在每次打开游标时,发送读取行的网络请求变得没有必要。列必须已被绑定,以便在打开时进行预取。该连接参数可以帮助减少客户/服务器请求数,从而帮助改善 LAN 或 WAN 上的性能。
PreventNotCapable SQL Anywhere ODBC 驱动程序会返回 [驱动程序不支持] 错误,因为它不支持限定符。某些 ODBC 应用程序不能正确处理该错误。将此参数设置为 YES 可以防止返回此错误代码,从而使这些应用程序能够正常工作。
SuppressWarnings 如果不想显示读取过程中从数据库服务器返回的警告消息,则将此参数设置为 YES。数据库服务器 8.0.0 及更高版本所返回的读取警告比早期版本范围更广。对于用该软件较早版本部署的应用程序,您可以选择此选项以确保正确处理读取警告。
TranslationDLL 提供此选项是为了实现向后兼容。不建议使用转换器。
TranslationName 提供此选项是为了实现向后兼容。不建议使用转换器。
TranslationOption 提供此选项是为了实现向后兼容。不建议使用转换器。
另请参见
示例

写入数据源 newdsn 的定义。如果数据源已存在,不提示进行确认。

dbdsn -y -w newdsn -c "UID=DBA;PWD=sql;LINKS=TCPIP;ENG=myserver"

或者,使用不同的选项顺序,

dbdsn -w newdsn -c "UID=DBA;PWD=sql;LINKS=TCPIP;ENG=myserver" -y

列出所有已知用户数据源,每行对应一个数据源名称:

dbdsn -l

列出所有已知系统数据源,每行对应一个数据源名称:

dbdsn -ls

列出所有数据源及其相关连接字符串:

dbdsn -l -b

报告用户数据源 MyDSN 的连接字符串:

dbdsn -g MyDSN

报告系统数据源 MyDSN 的连接字符串:

dbdsn -gs MyDSN

删除数据源 BadDSN,但首先列出 BadDSN 的连接参数,并提示进行确认:

dbdsn -d BadDSN -v

删除数据源 BadDSN,但不提示进行确认。

dbdsn -d BadDSN -y

为数据库服务器 MyServer 创建名为 NewDSN 的数据源:

dbdsn -w NewDSN -c "UID=DBA;PWD=sql;ENG=MyServer"

如果 NewDSN 已经存在,会提示就是否覆盖该数据源进行确认。

列出所有连接参数名及其别名:

dbdsn -cl

列出所有用户数据源:

dbdsn -l -o dsninfo.txt

列出所有连接参数名:

dbdsn -cl -o dsninfo.txt

指定一个绝对文件名。创建 DSN 时,它将包含 DBF=c:\SQLAnywhere11\my.db

c:\SQLAnywhere11> dbdsn -w testdsn -cw -c UID=DBA;PWD=sql;ENG=SQLAny;DBF=my.db

生成创建 SQL Anywhere 11 Demo 数据源的命令并将其输出到名为 restoredsn.bat 的文件中:

dbdsn -cm -gs "SQL Anywhere 11 Demo" > restoredsn.bat

restoredsn.bat 文件包含以下内容:

dbdsn -y -ws "SQL Anywhere 11 Demo" -c "UID=DBA;PWD=sql;
DBF='C:\Documents and Settings\All Users\Documents\SQL Anywhere 11\Samples\demo.db';
ENG=demo11;START='C:\Program Files\SQL Anywhere 11\bin32\dbeng11.exe';
ASTOP=yes;Description='SQL Anywhere 11 Sample Database'"

返回 Unix 中系统信息文件的位置:

dbdsn -f

此命令会返回以下输出:

dbdsn using /home/user/.odbc.ini

更改系统信息文件的位置:

export ODBCINI=./myodbc.ini

使用 dbdsn -f 验证系统信息文件的新位置:

dbdsn using ./myodbc.ini

创建数据源时使用 -ns 选项:

dbdsn -w NewDSN -c "UID=DBA" -ns

这将产生以下输出:

Configuration "newdsn" written to file ./myodbc.ini