正如@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 Server,Sybase和MySQL的,甚至在概念上更接近或者表空間或DB2中的模式出現。
在DB2中,表空間是保存物理數據庫對象(表,索引)的邏輯容器。表空間具有容器(定義數據寫入位置的物理文件,與SQL服務器中的文件組相同)。
DB2中的模式是對象(表,索引,視圖等)的邏輯限定符。默認情況下,當用戶連接到數據庫時,CURRENT SCHEMA專用寄存器默認爲用戶的登錄ID;但是,這可以通過使用SET CURRENT SCHEMA語句來更改。 CURRENT SCHEMA用於限定SQL語句中的對象。
在SQL Server中,「master」數據庫類似於DB2數據庫中的SYSCATSPACE表空間,它將系統目錄存儲在SYSCAT(和SYSIBM)模式中。系統目錄表包含有關數據庫中所有對象的元數據。
SQL Server的「Tempdb」數據庫相當於DB2數據庫中的臨時表空間。默認情況下有一個名爲TEMPSPACE1的表空間,但在單個數據庫中可以有多個臨時表空間。
Msdb對應於SYSTOOLSPACE表空間(和SYSTOOLS模式)。
DB2沒有等效於Model數據庫。 (當您執行「create database」命令時,DB2將創建一個空數據庫,但不能爲此數據庫中包含的內容設置模板。
如果您的DB2數據庫正在使用SQL複製,數據庫中可能存在一組存儲複製狀態和信息的表,但是對於存儲此數據的模式沒有標準的命名約定。 (這將相當於分發數據庫)。
您確定CURRENT SERVER不是您想要的嗎?在Windows上的DB2 V9.7中,它給了我數據庫名稱。 – Leons 2011-02-25 02:00:18
這也適用於較早版本的DB2 - 9.5和9.1。 – 2011-02-25 07:30:57