ODBC 客户端连接信息通常以 ODBC 数据源形式部署。您可以按照下列方式之一来部署 ODBC 数据源:
编程方式 将数据源的说明添加到最终用户的注册表或 ODBC 初始化文件中。
手工 向最终用户提供说明,以便他们能够在自己的计算机上创建相应的数据源。
在 Windows 上,应使用 [ODBC 管理器] 中的 [用户 DSN] 选项卡或 [系统 DSN] 选项卡手工创建数据源。SQL Anywhere ODBC 驱动程序显示用于输入设置的配置窗口。数据源设置包括数据库文件的位置、数据库服务器的名称以及任何启动参数和其它选项。
在 Unix 平台上,可以使用 SQL Anywhere 的 dbdsn 实用程序来手工创建数据源。数据源设置包括数据库文件的位置、数据库服务器的名称以及任何启动参数和其它选项。
对于每种方式,本节都向您提供需要了解的信息。
有三种数据源:用户数据源、系统数据源和文件数据源。
用户数据源定义存储在注册表的某个部分中,其中包含了当前登录到系统的特定用户的设置。但是,系统数据源对于所有用户和 Windows 服务可用,无论用户是否登录到系统,Windows 服务都运行。给定一个名为 MyApp 的正确配置的系统数据源,任何用户都可以通过在 ODBC 连接字符串中提供 DSN=MyApp 来使用该 ODBC 连接。
文件数据源不保留在注册表中,而是保留在一个专门的目录中。连接字符串必须提供 FileDSN 连接参数才能使用文件数据源。
每个用户数据源都由注册表条目向系统标识。确保可以为数据源定义创建正确的注册表条目最简单的方法是使用 SQL Anywhere dbdsn 实用程序进行创建。
否则,您必须在特定的注册表项中创建一组注册表值。
对于用户数据源,该注册表项如下所示:
HKEY_CURRENT_USER\ SOFTWARE\ ODBC\ ODBC.INI\ user-data-source-name |
对于系统数据源,该项如下所示:
HKEY_LOCAL_MACHINE\ SOFTWARE\ ODBC\ ODBC.INI\ system-data-source-name |
该项包含一组注册表值,每个值都与一个连接参数相对应。例如,对应于 SQL Anywhere 11 Demo 系统数据源名 (DSN) 的 SQL Anywhere 11 Demo 项包含以下针对 32 位 Windows 的设置:
值的名称 | 值的类型 | 值的数据 |
---|---|---|
Autostop | String | YES |
DatabaseFile | String | samples-dir\demo.db |
Description | String | SQL Anywhere 11 Sample Database |
Driver | String | install-dir\bin32\dbodbc11.dll |
Password | String | sql |
ServerName | String | demo11 |
StartLine | String | install-dir\bin32\dbeng11.exe |
UserID | String | DBA |
建议在所部署应用程序的连接字符串中包含 ServerName 参数。这样可确保当计算机运行着多个 SQL Anywhere 数据库服务器时,应用程序可连接到正确的服务器,并且可以帮助防止出现与计时相关的连接故障。
在上述条目中,install-dir 是 SQL Anywhere 的安装目录。对于 64 位 Windows,bin32 将替换为 bin64。
另外,您必须将数据源名添加到注册表中的数据源列表中。对于用户数据源,使用以下注册表项:
HKEY_CURRENT_USER\ SOFTWARE\ ODBC\ ODBC.INI\ ODBC Data Sources |
对于系统数据源,使用以下项:
HKEY_LOCAL_MACHINE\ SOFTWARE\ ODBC\ ODBC.INI\ ODBC Data Sources |
该值将每个数据源与一个 ODBC 驱动程序相关联。值的名称是数据源的名称,值的数据是 ODBC 驱动程序的名称。例如,由 SQL Anywhere 安装的系统数据源名为 SQL Anywhere 11 Demo,其值如下所示:
值的名称 | 值的类型 | 值的数据 |
---|---|---|
SQL Anywhere 11 Demo | String | SQL Anywhere 11 |
用户数据源配置可以包含敏感的数据库设置(如用户的 ID 和口令)。这些设置以纯文本形式存储在注册表中,可使用由 Microsoft 随操作系统提供的 Windows 注册表编辑器 regedit.exe 或 regedt32.exe, 来查看。您可以选择加密口令或要求用户在连接时输入口令。
可通过以下方式在 ODBC 连接字符串中标识数据源名称:
DSN=UserDataSourceName |
在 Windows 上,如果在连接字符串中提供了 DSN 参数,则首先在 Windows 注册表中搜索当前用户数据源定义,然后再搜索系统数据源。只有在 ODBC 连接字符串中提供了 FileDSN 时才搜索文件数据源。
下表阐释了当数据源存在且以 DSN 或 FileDSN 参数形式包括在应用程序的连接字符串中时,用户和开发人员应该注意的一些问题。
当数据源…… | 连接字符串还必须标识…… | 用户必须提供…… |
---|---|---|
包含 ODBC 驱动程序的名称和位置;数据库文件/服务器的名称;启动参数;用户 ID 和口令。 | 无额外信息 | 无额外信息。 |
包含 ODBC 驱动程序的名称和位置;数据库文件/服务器的名称;启动参数。 | 无额外信息 | 用户 ID 和口令(如果未在 DSN 中提供)。 |
只包含 ODBC 驱动程序的名称和位置。 | 数据库文件的名称 (DBF=) 和/或数据库服务器的名称 (ENG=)。或者,它可能包含其它连接参数,例如,Userid (UID=) 和 PASSWORD (PWD=)。 | 用户 ID 和口令(如果未在 DSN 或 ODBC 连接字符串中提供)。 |
不存在 | 要使用的 ODBC 驱动程序名称 (Driver=) 和数据库名称 (DBN=)、数据库文件 (DBF=) 和/或数据库服务器 (ENG=)。或者,它可能包含其它连接参数,例如,Userid (UID=) 和 PASSWORD (PWD=)。 | 用户 ID 和口令(如果未在 ODBC 连接字符串中提供)。 |
有关 ODBC 连接和配置的详细信息,请参见以下内容:
开放式数据库连接 (ODBC) SDK(可从 Microsoft 获得)。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |