使用 DBxEnableTable API(其中,x 为 a 时表示音频、 为 i 时表示图象或为 v 时表示视频)或 ENABLE TABLE 命令来对 DB2 Extender 启用表。
启用用户表时, 还必须指定表空间来存放随它一起的管理支持表(及其索引)。指定的一个或多个表空间可以是空值, 在此情况下,使用缺省表空间。
仅限于 EEE: 当在分区环境中对 Extender 启用数据库时, 应在包括分区数据库系统中的所有节点的节点组中定义指定的表空间。并且,指定的表空间必须与用户表位于同一节点组中。
仅限于 EEE:不能将 DB2 Extender 列用作分区数据库环境中的分区关键字列。
您需要“控制”或“改变”用户表的权限。在启用数据库中的表之前,必须先启用该数据库。
在下列示例中,使用缺省表空间来启用表,以存放图象数据。数据库已启用。
使用 API: 在下例中,在启用表之前, 代码创建表并落实更改。该示例包括一些差错检验代码。完整的样本程序在 SAMPLES 子目录中的 ENABLE.C 文件中。
SQLCHAR szCreate_DB2UDB[]="CREATE TABLE %s(%s mmdbsys.DB2Image, %s mmdbsys.DB2Video, %s mmdbsys.DB2Audio, artist varchar(25), title varchar(25) stock_no char(11), tw char(10), price char(10))"; SQLRETURN rc = SQL_SUCCESS; SQLINTEGER sqlcode = 0; char errorMsgText[MMDB_ERROR_MSG_TEXT_LEN+1]; char tableName[8+18+1] = "sobay_catalog"; char audioColumn[18+1] = "music"; char imageColumn[18+1] = "covers"; char videoColumn[18+1] = "video"; char *program = "enable"; char *step; /*-----create table --------------------------------------------------*/ printf("%s: Creating table ......\n", program); if (!SERVER_IS_DB2390) sprintf((char*) buffer, (char*) szCreate_DB2UDB, tableName, imageColumn, videoColumn, audioColumn): rc = SQLAllocStmt(hdbc, &hstmt); cliCheckError(SQL_NULL_HENV, hdbc, SQL_NULL_HSTMT, rc); rc = SQLExecDirect(hstmt, buffer, SQL_NTS); cliCheckError(SQL_NULL_HENV, SQL_NULL_HDBC, hstmt, rc); /*---- enable table for image extender ---------------------------------*/ printf("%s: Enabling table......\n", program); step="DBiEnableTable"; if (!SERVER_IS_DB2390) rc = DBiEnableTable(NULL,tableName); } if (rc < 0) { printf("%s: %s failed!\n", program, step); printMsg(rc); DBiGetError(&sqlcode, errorMsgText); if (sqlcode) printf("sqlcode=%i, "sqlcode"); printf("errorMsgText=%s\n", errorMsgText); } else if (rc > 0) { printf("%s: %s, warning detected.\n", program, step); printMsg(rc); DBiGetError(&sqlcode, errorMsgText); printf("warningMsgText=%s\n", errorMsgText); } else printf("%s: %s OK\n", program, step) /*---- end of enable table --------------------------------------------*/ |
使用 db2ext 命令行:在此示例中, 表已存在,并且已启用数据库。
enable table employee for db2image