您可以检查用户表中的哪些项目引用外部媒体文件。使用 DBxAdminIsFileReferenced API 来检查当前数据库中所有或者部分用户表的哪些项引用外部媒体文件。使用 DBxIsFileReferenced API 来检查特定用户表中的哪些项引用外部媒体文件。
使用 API: 下例中的样本代码返回引用文件的次数以及引用它的位置。它包括一些错误检验代码。完整的样本程序在 SAMPLES 子目录中的 API.C 文件中。
/*---- Query the database using DBiAdminIsFileReferenced API. ------*/ step="DBiAdminIsFileReferenced API"; rc = DBiAdminIsFileReferenced((char*) uid, filename, &count, &filelist); if (rc < 0) { printf("%s: %s FAILED!\n", program, step); printMsg(rc); DBiGetError(&sqlcode, errorMsgText); printf("sqlcode=%i, errorMsgText=%s\n", sqlcode, errorMsgText); } else if (rc > 0) { printf("%s: %s, warning detected.\n", program, step); printMsg(rc); DBiGetError(&sqlcode, errorMsgText); printf("sqlcode=%i, errorMsgText=%s\n", sqlcode, errorMsgText); } else { if (count == 0) printf("%s: \"%s\" file is not referenced\n", program, filename); else { printf("%s: \"%s\" file is referenced %d times\n", program, filename); for (i=0; i < count; i++) { /* filename is NULL for any IsFileReferenced APIs */ printf ("filename = %s\n", filelist[i].filename); printf ("\tqualifier = %s\n", filelist[i].tqualifier); printf ("\ttable = %s\n", filelist[i].tname); printf ("\thandle = %s\n", filelist[i].handle); printf ("\tcolumn = %s\n", filelist[i].column); if (filelist[i].filename) free (filelist[i].filename); } } if (filelist) free (filelist); printf("%s: %s PASSED\n\n", argv[0], step); } |