正如@Leons在评论中所说,CURRENT SERVER确实返回了数据库的名称。
$ db2 connect to sample
Database Connection Information
Database server = DB2/LINUX 9.1.9
SQL authorization ID = IDBJORH
Local database alias = SAMPLE
$ db2 values current server
1
------------------
SAMPLE
1 record(s) selected.
似乎您的困惑源于SQL服务器,Sybase甚至MySQL中的“数据库”在概念上更接近于DB2中的表空间或模式。
在DB2中,表空间是一个包含物理数据库对象(表,索引)的逻辑容器。表空间有容器(定义数据写入位置的物理文件,与SQL服务器中的文件组相同)。
DB2中的模式是对象(表,索引,视图等)的逻辑限定符。默认情况下,当用户连接到数据库时,CURRENT SCHEMA特殊寄存器默认为用户的登录ID;但是这可以通过使用SET CURRENT SCHEMA语句来更改。 CURRENT SCHEMA用于限定SQL语句中的对象。
在SQL Server中,“主”数据库类似于DB2数据库中的SYSCATSPACE表空间,该数据库将系统目录存储在SYSCAT(和SYSIBM)模式中。系统目录表包含有关数据库中所有对象的元数据。
SQL Server的“Tempdb”数据库,等同于DB2数据库中的临时表空间。默认情况下,有一个名为TEMPSPACE1的表空间,但在一个数据库中可以有多个临时表空间。
Msdb对应于SYSTOOLSPACE表空间(和SYSTOOLS模式)。
DB2没有Model数据库的等价物。 (DB2将在您执行“create database”命令时创建一个空数据库,但您无法为此数据库中包含的内容设置模板。
如果您的DB2数据库使用SQL复制,则数据库中可能存在一组存储复制状态和信息的表,但是没有标准命名约定来保存此数据。 (这相当于分发数据库)。