連接環境補充資料
本章列出其他適用於 DB2 Universal Database for AS/400 及
DB2 Common Server 版本 2 或 DB2 Universal Database 之間的 SQL
作業的考慮事項。其餘的討論內容則與 DB2 for OS/2
有關,一般來說,類似的考量適用於其他平台上的 DB2 Common Server 版本 2 及 DB2
Universal Database,說明如下:
- 在 AS/400 上,表格名稱是以集成 (或檔案庫名稱) 來限定,而且常駐在 DB2
Universal Database for AS/400 資料庫中 (每一 AS/400 有一個資料庫)。不過,在 PC
上,表格將以使用者 ID (表格的建立者) 來限定,且常駐在特殊資料庫中 (在具有 DB2
for OS/2 的 PC 上,具有多個可能的資料庫)。
- 如果查詢表格的名稱已設定,但沒有集成名稱,這表示從 DB2 for OS/2 (透過 DB2
Connect) 到 DB2 Universal Database for AS/400 的查詢將使用目標端工作 (位在
AS/400 上) 的使用者 ID,取得 (預設值) 集成名稱。 請小心,否則可能找不到表格。
- 如果未在查詢中指定表格限定元 (以 'qualifier.table-name'
形式表示),則這也表示一個從 DB2 Universal Database for AS/400 到 DB2 for OS/2
的查詢將具有隱含的表格限定元。 DB2 for OS/2 表格限定元 (透過 AS/400
應用系統要求程式指定為集成或檔案庫) 將預設為產生這個查詢的使用者的使用者
ID。請小心,否則您的查詢可能會找不到表格。
- 您可能想要以共用使用者 ID,來建立 DB2 for OS/2 資料庫及表格。對 DB2 for
OS/2 而言,沒有任何如 DB2 Universal Database for AS/400
中所具有的實體集成,但僅是表格限定元,這是建立者的使用者 ID。
- 如果 DB2 for OS/2 是使用 DRDA 通訊協定的從屬站,將需要 DB2 Connect (或
DDCS)。如果 DB2 for OS/2 僅作為伺服器,則不需要它。
- 正確地架構 DB2 Connect 是非常地重要:
- 請確定您是否具有最新版 DB2 for OS/2 及 DB2 Connect。
如果您沒有,請引用任一可用的 FixPaks。
- 遵循手冊中所提到的安裝與架構指示。
- 如果您正使用 APPC,則在 DB2 for OS/2 作為應用系統要求程式或應用程
式伺服器時,必須格外小心,配合為 PC
建立之控制器及裝置來適當地架構通信。此外,不管所使用的通訊協定為何,在 AS/400
將連接的每一個 DB2 for OS/2 資料庫的 RDB 目錄中,將需要一個登錄。
欲設置 APPC 通信,請執行下列步驟:
- 您可以用人工方式,建立裝置及控制器。 如果您具有記號環且線路說明 AUTOCRTCLT
參數為 *YES,您也可以讓系統指您建立它們。使用 WRKLIND 命令,透過選項 2
「變更」,即可查閱線路說明。向下跳至參數「自動建立控制器」,並察看您的
AUTOCRTCLT 值。
如果您的系統將自動建立控制器,則您可以起始必需的控制器說明的建立。從 OS/2
上的 CM/2 資料夾中,啟動「通信」並執行「子系統管理」。從「子系統管理」中,查閱
SNA
子系統的詳細資訊。在此,您可以查閱邏輯鏈結。開啟它並啟動想要的系統的鏈結,在該處自動建立控制器。稍後,將自動建立裝置說明。
- AS/400 上的 PC 的裝置及控制器需要「作用中」,方可在系統之間進行網路連接。
您可以在控制器說明中,使 SWTDSC 參數設定為
*NO,以便作用中的控制器仍為作用中。您也可以將 ONLINE 參數設定為 *YES,以便在
IPL 時,控制器將變成作用中。(裝置說明中的 ONLINE 參數可能也需要設定為
*YES)。注意,欲在控制器說明上變更參數,它必須為「VARIED OFF」且控制器擁有者
(CTLOWN 參數) 需要設定為 *USER。
- 若要為 AS/400 要連接的每一個 DB2 for OS/2 資料庫在 RDB
目錄中新增一個登錄,請使用 ADDRDBDIRE 指令:RDB 名稱為 DB2 for OS/2
資料庫名稱,而遠端位置名稱則是工作站的名稱。
- AS/400 上 DB2 for OS/2 所使用的任何表格 (實體檔) 會須要適當的 CCSID 值
(通常 37 表示 US 客戶)。此外,欲順利地連接,您可能需要變更下列其中一項:工作的
CCSID、 所使用的使用者設定檔的 CCSID,或系統 CCSID 值 (QCCSID) (如果它是預設值
65535
的話)。正常情況下,產生這個變更的最好地方是在伺服器工作將在其下執行的使用者設定檔中
- 在使用 DB2 Connect 與 AS/400 伺服器結合使用之前,您必須在 AS/400
上,為應用程式及 DB2 Connect 公用程式,建立 SQL 資料包。
- DB2 PREP 命令可用來處理內含 SQL 的應用程式來源檔。
這個處理將建立一個已修改過的來源檔,它含有 SQL
陳述式的主語言呼叫,而且依據預設值,它將在您目前所連接的資料庫中,建立一個 SQL
資料包。
- 欲使 DB2 Connect 公用程式連結至任何 AS/400 DB2 伺服器:
-
CONNECT TO rdbname
-
BIND path@DDCS400.LST BLOCKING ALL SQLERROR CONTINUE
MESSAGES DDCS400.MGS GRANT PUBLIC
以預設路徑
C:\SQLLIB\BND\,或是如果您未安裝至預設位置,則以您的本端值,取代上面
path@DDCS400.LST 中的 path。
註: | OS/400 V3R1 需要 PTF SF23624,方可避免來自列示中第三個連結檔案上的 DB2
Universal Database for AS/400 資料庫中的 -901 SQL 字碼。
|
-
CONNECT RESET
- 對從 DB2 Universal Database for AS/400 到 DB2 for OS/2 的交談式 SQL 而言:
- 使用 NAMING(*SQL)、DATFMT(*ISO) 及 TIMFMT(*ISO) 的階段作業屬性。 其他格式
(*ISO 除外) 均可作用,但並非全部,且對日期格式 (DATFMT)
所用的值也必須用於時間格式 (TIMFMT)。
- 注意 AS/400 上的 COLLECTION 與 DB2 for OS/2
的表格限定元之間的對應關係,請參閱 SQL 作業的這個考慮事項列示中的項目 1。
- 對頭一個交談式階段作業,您也須對確定控制指定 COMMIT(*CS); 然後是 (1)
RELEASE ALL、(2) COMMIT 及 (3) CONNECT TO rdbname (其中 'rdbname'
將以特殊資料庫來取代)。 此時,您可能也想要 GRANT EXECUTE ON PACKAGE
QSQL400.QSQL0200 TO PUBLIC (或授與特定使用者),以便其他使用者可以使用在
PC 上,為 SQL 所建立的 SQL PKG。
- 對在存取 DB2 for OS/2 資料庫的 AS/400
上所建立的任何程式而言,請記住使用下列 DB2 for OS/2 命令:
-
GRANT ALL PRIVILEGES ON TABLE table-name TO user
-
GRANT EXECUTE ON PACKAGE package-name (通常為 AS/400
程式名稱) TO user
可能的話,將使用者指定為 'PUBLIC'。
- 在開發存取 DB2 for OS/2 (V.2.1.1 或更早的版本) 的
AS/400 應用程式時,已發出一則訊息 (SQL5057),來回應 CRTSQLxxx 命令,指出已在
PC 上建立 SQL 資料包,即使尚未建立資料包的話,也是如此。 這將在最新版的 DB2
for OS/2 中加以修正。
此外,在舊版的 DB2 for OS/2
中,將不會對在其來源成員說明的文字欄位中有任何資料的 OS/400 程式,建立 SQL
資料包。
- DB2 for OS/2 中的 C 語言儲存程序無法使用 argc 及 argv 作為參數 (類型不能是
main())。這不同於必須使用 argc 及 argv 的 AS/400 儲存程序。對 DB2 for OS/2
儲存程序而言,請參閱 \SQLLIB\SAMPLES 次目錄中的例子。 在 C 次目錄中,尋找
OUTSRV.SQC 及 OUTCLI.SQC。
- 對 DB2 for OS/2 中 AS/400 所呼叫的儲存程序而言,將使用大寫字體的程序名稱。
AS/400 目前將程序名稱包成大寫字體。 不過,這表示在 PC
上具有相同程序名稱、但小寫字體的程序將找不到。 對 AS/400
上的儲存程序而言,請記住程序名稱將使用大寫字體。
- 此外,若沒有引用有關內含 SQL 的適當 PTF,則從 AS/400 到 DB2 for OS/2 的
CALL 陳述式,僅在您於主變數中放入程序名稱 (CALL
:host-procedure-name(...)) 時才能作用。.
修正這個問題的 V3R7 PTF 為 SF35932。 V3R2 PTF 為 SF36535。
- 如果 AS/400 上的儲存程序被建立,以便能與呼叫程式在同一個啟動群組中執行
(建立它們的正確方法),則它們不能包括 COMMIT。不過,對 DB2 for OS/2
而言,儲存程序將被容許包括 COMMIT,但應用程式設計者應該明白,無法知道 DB2
Universal Database for AS/400 中已發生確定作業的部份。
[ 頁面頂端 | 前一頁 | 下一頁 | 目錄 | 索引 ]