4. 创建、运行和连接到数据库

4.1. 创建数据库

当您请求 Adaptive Server Anywhere 创建数据库时,它会创建主数据库文件,其中包含以下对象,以及其他对象:

数据库文件的最大大小取决于您的文件系统和您选择的页面大小。数据库文件限制为 2.56 亿个数据库页或文件大小限制,以先达到者为准。在某些情况下,UNIX 文件可以达到 1 Tb 大小——有关更多信息,请参阅《Adaptive Server Anywhere 参考手册》的“物理限制”章节或您的 Linux 文档。您可以将页面大小设置为 1、2、4、8、16 或 32 kb,但不建议您使用 1 kb 的页面大小。默认页面大小为 2 kb。

默认情况下,Adaptive Server Anywhere 还会创建一个名为事务日志的文件。除了提高性能外,事务日志对于 Adaptive Server Anywhere 复制系统和系统故障时的数据库恢复至关重要。如果可能,建议将事务日志放置在与主数据库文件不同的物理设备(在大多数情况下是磁盘驱动器)上,以减少媒体故障事件中主数据库文件和事务日志都受到影响的可能性。您可以在创建数据库时指定事务日志的名称和位置。

本节向您展示如何通过命令行提示符或 Interactive SQL 创建数据库。如果您愿意,也可以通过 Sybase Central 创建数据库,方法是打开 Adaptive Server Anywhere 7 下的“实用程序”文件夹。

4.1.1. 从命令行提示符创建数据库

用于创建数据库的命令行实用程序是 dbinit

语法

dbinit [开关] 数据库文件名

数据库文件名是您希望为数据库文件指定的名称,例如,mydb.db。如果您发出命令“dbinit -?”,您将看到上述语法,以及您可以使用的选项列表。

要在 Linux 上创建您的第一个 Adaptive Server Anywhere 数据库,请输入以下命令

dbinit -t './logs/mydb.log' p 4096 mydb.db

此命令在当前工作目录中创建一个名为 mydb.db 的数据库,页面大小为 4096 字节,由 -p 开关指定。假设目录存在,它还在子目录“logs”中创建事务日志 mydb.log,由 -t 开关指定。Adaptive Server Anywhere 数据库的文件扩展名为“.db”。

4.1.2. 从 Sybase Central 创建数据库

要在 Sybase Central 中创建数据库,请打开左侧窗格的 Adaptive Server Anywhere 部分,然后选择“实用程序”。双击右侧窗格中的“创建数据库”,然后按照屏幕上的说明进行操作。

4.2. 运行数据库服务器和启动数据库

您的机器上安装了两个版本的数据库服务器。如果您只是在本地使用 Adaptive Server Anywhere,请使用个人数据库服务器 (dbeng7)。但是,如果您要通过网络连接到 Adaptive Server Anywhere 数据库,则应使用网络数据库服务器 (dbsrv7)。本文档中的示例使用 dbeng7,但这两个命令在很大程度上是可互换的。有关具体差异,请参见下表。

表 7. 个人数据库服务器和网络数据库服务器之间的差异

 个人数据库服务器网络数据库服务器
可执行文件的名称dbeng7dbsrv7
本地连接
网络连接
最大连接数10取决于许可证
可用的通信协议共享内存、TCP/IP共享内存、TCP/IP
用于请求处理的最大 CPU 数量2无限制
默认/最大内部线程数10/1020/无限制

语法

(dbeng7 | dbsrv7) [服务器开关] [数据库文件 [数据库开关],]

数据库文件指定数据库的路径和文件名。您在启动数据库服务器时实际上不需要指定数据库文件,但是如果您不这样做,则必须使用 -n 开关为服务器指定名称。默认情况下,如果您不指定数据库的名称,它将采用数据库文件的名称,减去路径和扩展名。同样,如果您不指定数据库服务器的名称(您可以在服务器开关中执行此操作),它将采用在其上启动的第一个数据库的名称。

有关 dbeng7 和 dbsrv7 用法的完整详细信息,请参阅《Adaptive Server Anywhere 参考》中的“数据库服务器”。

要启动 Adaptive Server Anywhere 个人数据库服务器,但不启动数据库,并将其命名为 MyServer,请在提示符下发出以下命令

dbeng7 -n MyServer

要启动 Adaptive Server Anywhere 个人数据库服务器并将其命名为 MyServer,然后在 MyServer 上从 mydb.db 启动数据库,将其命名为 MyDatabase,请发出以下命令

dbeng7 -n MyServer mydb.db -n MyDatabase

在后一种情况下,如果您不将数据库服务器命名为 MyServer,则它将被命名为 MyDatabase。

服务器还有许多其他可用的开关。您可以通过在命令提示符下键入“dbeng7 -?”来获取它们的完整列表。一些重要的开关包括以下内容:

4.2.1. 以守护程序方式运行服务器

有时,服务器需要在当前会话之外运行(即,无论是否有人登录)。为此,请在启动服务器时在命令行中使用 -ud 开关,以将其作为守护程序运行。

以下命令将启动作为守护程序的数据库服务器,使用我们之前创建的数据库

dbsrv7 -ud -n MyDatabase mydb.db

注意:使用“&”在后台运行数据库服务器不起作用。

4.3. 停止数据库服务器

假设您具有适当的权限,您可以使用以下任何一种方法停止数据库服务器:

注意:虽然术语引擎是 SQL 语句名称的一部分,但服务器是现在常用的术语。除非明确提及 STOP ENGINE SQL 语句,否则本文档将使用术语服务器

默认情况下,任何用户都可以停止个人数据库服务器,但只有具有 DBA 权限的用户才能停止网络数据库服务器。(此默认值可以通过在启动服务器时使用 -gk 开关来更改 - 有关详细信息,请参阅《Adaptive Server Anywhere 参考》。)

命令行实用程序语法如下:

dbstop [开关] {名称}

如果您发出 dbstop 以停止本地运行的服务器,您只需在 {名称} 中指定数据库服务器的名称即可。如果服务器不是在本地运行,您需要先创建与服务器的连接,然后才能告诉它停止。-c 开关允许您为要在其上停止的服务器上运行的数据库指定连接字符串。要停止 MyServer,请执行以下命令

dbstop -c "uid=DBA;pwd=SQL;eng=MyServer;dbn=MyDatabase"

在这种情况下,您也可以只给出服务器名称,因为服务器在本地运行

dbstop MyServer

第一个命令连接到服务器 MyServer 上的名为 MyDatabase 的数据库,然后停止名为 MyServer 的服务器。如果服务器上没有活动数据库,则必须将“dbn=utility_db”添加到连接字符串。

假设“Club”是服务器“Goliath”上运行的数据库之一的名称,并且您要停止 Goliath 上运行的所有数据库,包括 Club。以下命令可以完成此操作,并关闭数据库服务器

dbstop -c "uid=DBA;pwd=SQL;eng=Goliath;dbn=Club"

如果您有一个名为“David”的数据库服务器正在运行,但没有任何数据库在其上启动,则可以使用以下命令停止服务器

dbstop -c "uid=DBA;pwd=SQL;eng=David;dbn=utility_db"

STOP ENGINE 语句的语法如下:

STOP ENGINE [ 服务器名称 ] [ UNCONDITIONALLY ]

名为服务器名称的服务器已停止。如果省略服务器名称,则当前正在运行的数据库服务器将停止。如果指定了 UNCONDITIONALLY,则无论是否仍有与服务器的连接,数据库服务器都将停止。

4.4. 停止数据库

也可以停止单个数据库,而无需停止服务器或可能在其上运行的任何其他数据库。为此,请使用 STOP DATABASE SQL 语句。

语法

STOP DATABASE 数据库名称 [ON 引擎名称] [UNCONDITIONALLY]

您在数据库名称中指定您要停止的数据库的名称,但限制是指定的数据库不能是当前连接的数据库。“ON 引擎名称”子句只能在 Interactive SQL 中使用。您可以使用它来指定数据库在其上运行的服务器。在 Interactive SQL 之外,只有当数据库位于当前服务器上时才能停止。UNCONDITIONALLY 关键字强制停止数据库,即使有连接到它。默认情况下,如果存在活动连接,则无法停止数据库。

4.5. 连接到数据库

您可以通过以下任何接口连接到 Adaptive Server Anywhere 数据库:

无论您如何连接,都必须指定一些参数,例如用户名和密码,以建立与数据库的连接。这些可以在连接字符串、SQLCONNECT 环境变量、ODBC 数据源配置或对话框的字段中指定。

在本节中,您将找到有关如何通过 SQL 和 ODBC 连接的说明。

由于 Adaptive Server Anywhere 网络服务器是客户端/服务器数据库,因此您可以从基于 Windows 的 PC 和其他非 Linux 设备以及 Linux 应用程序连接到 Linux 托管的数据库。OLE DB 或 ADO 等编程接口仅在 Windows 上可用,但仍可用于 Linux 托管的数据库。

4.5.1. 连接字符串

连接字符串在对数据库执行操作时经常使用。它们由参数设置列表组成,参数设置之间用分号分隔并用双引号括起来。连接字符串中不应有多余的空格。

示例

"uid=DBA;pwd=SQL"

在每个等号之前(在本例中为 uid、pwd 和 dbf)的字母短字符串称为关键字,每个关键字对应一个连接参数。《Adaptive Server Anywhere 用户指南》的“连接到数据库”章节中列出了许多可用的连接参数。在《Adaptive Server Anywhere 参考》的“连接和通信参数”章节中也详细描述了它们。

当 Adaptive Server Anywhere 实用程序查找连接参数时,它们会检查 SQLCONNECT 环境变量中是否有连接字符串中遗漏的任何参数。如果要将连接参数放入 SQLCONNECT 环境变量中,请将等号替换为数字 (#) 符号。在 bash 中,您将使用以下命令

SQLCONNECT='uid#DBA;pwd#SQL'

在上述命令中,单引号是必要的,因为分号可以用于分隔 bash 命令。您也可以使用双引号。

要使 SQLCONNECT 在后续 shell 中可用,您需要使用“export SQLCONNECT”将 SQLCONNECT 变量导出到环境。如果您希望每次登录时都使用相同的连接参数,您可能还需要将这些命令放入您的 .bash_profile(如果您使用其他 shell,则为 .profile)。

4.5.2. 从 Interactive SQL 连接

要从 Interactive SQL 连接到数据库,请转到“命令”菜单,然后选择“连接...”,然后根据需要填写对话框。

4.5.3. 通过 ODBC 连接

ODBC(代表开放数据库互连)是用于将客户端应用程序连接到关系和非关系 DBMS 的行业标准接口。当您创建 ODBC 数据源时,它会封装数据和获取数据所需的任何其他信息,包括连接参数。

4.5.3.1. 使用 Adaptive Server Anywhere 设置 ODBC

要从 Linux 上的 ODBC 应用程序连接到 Adaptive Server Anywhere,您可以将 Sybase 的 ODBC 驱动程序用作驱动程序管理器,也可以使用第三方 ODBC 驱动程序管理器,例如 iODBC 或 unixODBC。如果您选择后一种方法,请按照您选择的驱动程序管理器的安装说明进行操作,并选择 dbodbc7.so(位于 sybase/SYBSsa7/lib 目录中)作为 Adaptive Server Anywhere 的 ODBC 驱动程序。

如果您选择前一种方法,如果您仅连接到 Adaptive Server Anywhere 数据库,则可以将 Adaptive Server Anywhere 的 ODBC 驱动程序用作驱动程序管理器。为此,您需要创建一些符号链接,以便 ODBC 驱动程序管理器请求被路由到 Sybase ODBC 驱动程序。从 sybase/SYBSsa7/lib 子目录中,输入以下命令

$ ln -s dbodbc7.so libodbc.so

$ ln -s dbodbc7.so libodbc.so.1

$ ln -s dbodbc7.so libodbcinst.so

$ ln -s dbodbc7.so libodbcinst.so.1

就这样!

4.5.3.2. 关于 ODBC 数据源

数据源存在于客户端计算机上,每个可通过 ODBC 访问的数据库至少有一个数据源。它们位于 .odbc.ini 文件或单独的 .dsn 文件中。

如果客户端计算机运行的是 Linux 或其他 UNIX 操作系统,则 ODBC 数据源既可以用于 ODBC 应用程序,也可以用于 Interactive SQL 和 Sybase Central 实用程序。

注意:数据库服务器在以下位置以及其他几个位置查找 .odbc.ini

  1. ODBCINI 环境变量

  2. ODBCHOME 和 HOME 环境变量

  3. 用户的主目录

  4. 当前目录

  5. 路径

  6. 根目录

如果您的主目录中不存在 .odbc.ini 文件,则必须在您的主目录中创建一个。您可以使用命令“ls -a ~/.odbc.ini”检查是否存在一个。

您可以使用 dbdsn 命令行实用程序管理 ODBC 数据源。

语法

dbdsn [ modifier-switches ] 
 { -l 
 | -d dsn 
 | -g dsn 
 | -w dsn [details-switches] 
 | -cl                        }

dbdsn 有四种主要操作模式,其行为取决于您选择 -l、-d、-g 或 -w 开关。在适用的情况下,要操作的数据源的名称由 dsn 指定。

  • -l 开关列出已定义的数据源

  • -d 开关删除指定的数据源

  • -g 开关为您提供指定数据源的详细信息

  • -w 开关使用 details-switches 中指定的参数创建新的 DSN

最重要的 details-switch 是 -c 开关,它允许您指定常用的数据库连接参数。您还可以将数据库服务器的名称指定为 details-switch。键入“dbdsn -cl”以显示可用连接参数的列表。

要为服务器 MyServer 创建名为 MyNewDSN 的新数据源,请在 shell 提示符下执行以下命令

dbdsn -w MyNewDSN -c "uid=dba;pwd=sql;eng=MyServer"

如果已存在名为 MyNewDSN 的数据源,dbdsn 会询问您是否要覆盖它。

相反,要删除 MyNewDSN,请执行以下命令

dbdsn -d MyNewDSN

modifier-switches 控制 dbdsn 如何将其消息输出到屏幕,以及是否可以在未经确认的情况下覆盖数据源。有关其他 dbdsn 选项的更多信息,请参阅《Adaptive Server Anywhere 参考》的“数据库管理实用程序”章节下的“数据源实用程序”。

4.5.3.3. 连接到 ODBC 数据源

创建 ODBC 数据源后,您可以通过 DSN(DataSourceName)连接字符串关键字访问它。

例如,对于名为 mydatasrc 的 ODBC 数据源,请使用以下连接字符串连接到与其关联的数据库

"dsn=mydatasrc"

注意:显式提供的连接参数和 SQLCONNECT 将覆盖 ODBC 数据源中提供的任何参数,顺序如此。

注意:FileDSN 连接参数在 Adaptive Server Anywhere 7.0.2 版本中尚不可用。未来版本的 Adaptive Server Anywhere 应该会支持 File DSN。