GBase8s CONNECT 语句

143 篇文章 3 订阅
142 篇文章 0 订阅

使用 CONNECT 语句连接数据库环境。该语句是 SQL ANSI/ISO 标准的扩展。
在这里插入图片描述

CONNECT 语句将应用程序连接到数据库环境,数据库环境可以是数据库、数据库服务器或数据库连同数据库服务器。如果应用程序成功连接到指定的数据库环境,则连接成为应用程序的当前连接。如果应用程序没有到数据库服务器的当前连接,则 SQL 语句失败。如果指定数据库名称,则数据库服务器打开该数据库,您不能在 PREPARE 语句中包含 CONNECT 。

应用程序可同时连接到数个数据库环境,并且它可以建立到同一个数据库环境的多个连接,条件是每个连接有唯一的连接名称。

在 UNIX™ 上,建立到同一个数据库环境的多个连接的唯一限制是,一个应用程序到每个使用共享内存连接机制的本地服务器只能建立一个连接。要找出本地服务器是使用共享内存连接机制,还是使用本地回送连接机制,请检查 $GBASEDBTDIR/etc/sqlhosts 文件。有关 sqlhosts 文件的更多信息,请参阅 GBase 8s 管理员指南。

在 Windows™ 上,本地连接机制是命名管道。从一个客户机到本地服务器可以存在多个连接。

任何时候都只有一个连接处于当前状态;其它连接均处于休眠状态。应用程序无法通过休眠的连接来与数据库进行交互。当应用程序建立新连接时,该连接就成为当前连接,而上一个当前连接变成休眠连接。可以使用 SET CONNECTION 语句使休眠的连接成为当前连接。另见 SET CONNECTIO语句 。

对于不同 GBase 8s 实例的数据库之间的连接,您不能使用不同的服务器别名在相同的两台数据库服务器之间建立多个活动的连接。如果使用 CONNECT TO dbserveralias 语句指定不同服务器别名来连接同一个远程服务器(dbserveralias 标识在 DBSERVERALIASES 配置参数的设置中声明),则不会发出错误,但是初始连接是重复使用的。

执行 CONNECT 语句的权限

当前用户,或者 PUBLIC ,必须在 CONNECT 语句指定的数据库上拥有 Connect 权限。执行CONNECT 语句的用户不能和数据库中现有的角色拥有相同的用户名。

有关当 CONNECT 语句连接到远程主机上的数据库服务器时如何使用 USER Authentication 子句指定备用用户名的信息,请参阅 USER Authentication 子句 。

连接上下文

每个连接包含一组称为 连接上下文的信息。连接上下文包含当前用户的名称。数据库环境与此名称相关联的信息以及连接状态的信息(例如活动的是否与连接相关联)。当应用程序进入休眠状态时保存连接上下文,而当应用程序再次成为当前应用程序时恢复此上下文。(有关更多信息,请参阅 使休眠连接成为当前的连接。)

数据库环境

此 CONNECT 以及类似于 SET CONNECTION 语句,可使用数据库环境语法段指定应用程序尝试建立连接的数据库或数据库服务器。不同于 SET CONNECTION 语句,该 CONNECT 语句还可以为此指定的数据库环境的连接声明名称。

数据库环境

在这里插入图片描述

如果设置了 DELIMIDENT 环境变量,数据库环境中的任何引号( ’ )必须是单引号。如果没有设置 DELIMIDENT ,那么单引号( ’ )或者双引号( " )在此都有效。

对 dbservername 的限制

如果指定 dbservername ,则它必须服满足以下限制。

⚫ 如果您指定的数据库服务器没有联机,则您会接收到一条错误。

⚫ 您在 dbservername 中指定的数据库服务器必须匹配 sqlhosts 文件中的数据库服务器的名称。

注: 如果数据库服务器的名称是一个分隔标识符或它包含大写字母,则数据库服务器不能参与跨数据库分布的 DML 操作。(如果该服务器包含大写字母,它还不能参与由 SQL 语句指定的服务器名称作为到数据库名称的限定符的跨数据库分布的 DML 操作。这些语句发生 -908 错误并失败,因为该 SQL 语法分析器将服务器名称中的所有的大写字母降档为小写字母。)要避免此限制,当声明要参与分布查询的数据库服务器的别名或名称使,仅指定没有大写字母的未分隔的名称。

指定数据库环境

可以指定数据库服务器和数据库,或仅指定数据库服务器,或仅指定数据库。数据库如何定位和打开取决于您是否在数据库环境表达式中指定数据库服务器名称。

仅指定数据库服务器

@dbservername 选项仅建立一个到数据库服务器的连接;它不打开数据库。使用此选项时,必须随后使用 DATABASE 或 CREATE DATABASE 语句(或它们的 PREPARE 语句以及 EXECUTE 语句)来打开数据库。

指定数据库服务器和数据库

如果同时指定数据库服务器和数据库,则应用程序连接到数据库服务器,该数据库服务器找到并打开数据库。

仅指定数据库

dbname 选项建立到缺省数据库服务器或 DBPATH 环境变量中的另一个数据库服务器的连接。它还找到并打开指定的数据库。(如果这仅指定数据库名称,则 db_var 选项也是如此。)

如果仅指定 dbname ,则其数据库服务器从 DBPATH 环境变量读取。在 GBASEDBTSERVER 环境变量中的数据库服务器总是在 DBPATH 值之前。

在 UNIX™ 上,如以下示例所示设置 GBASEDBTSERVER 和 DBPATH 环境变量(对于 C shell ):

setenv GBASEDBTSERVER srvA

setenv DBPATH //srvB://srvC

在 Windows™ 上,从任务栏选择开始 > 程序 > GBase 8s > setnet32 并设置 GBASEDBTSERVER 和

DBPATH 环境变量:

set GBASEDBTSERVER = srvA

set DBPATH = //srvA://srvB://srvC

下一个示例显示应用程序使用的生成的 DBPATH :

//srvA://srvB://srvC

应用程序首先建立到 GBASEDBTSERVER 指定的数据库服务器的连接。数据库服务器使用配置文

件中的参数来找到数据库。如果数据库不驻留在缺省数据库服务器上,或缺省数据库服务器脱机,

则应用程序连接到 DBPATH 中的下一个数据库服务器。在先前的示例中,该数据库服务器是 srvB 。

声明连接名称

在 ESQL/C 应用程序中,可以通过包含 AS 关键字为此数据库环境的连接声明标识符,其跟随在引号字符或存储标识符的主变量之后。该主变量必须是固定长度的字符数据类型。

连接标识

可选的 connection 名称是应用程序可以用来引用随后的 SET CONNECTION 和 DISCONNECT语句中的连接的唯一标识。如果应用程序不提供连接名称(或连接主机变量),则它可以引用使用数据库服务器的连接。然而,如果应用程序对同一个数据库环境进行了多个连接,则每个连接必须拥有唯一的名称。

只有 CONNECT 语句可以使用 AS 关键字声明连接名称。然而,CONNECT 语句不能引用之前声明的连接名称以指定数据库环境的连接。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值