SQL0750 - SQL0999
SQL0750N 因為無法重新命名表格或直欄,所以陳述式失敗。
解說
無法將 RENAME 陳述式中的來源表格重新命名,主要有下列幾個原因。
- 表格在一個以上的現有具體化查詢表格中被參照。
- 表格在一個以上的統計視圖中被參照。
- 一個以上的參照限制以此表格作為原始或相依表格。
- 此表格是分解一個以上 XSR 物件的目標表格。
- 表格為系統期間時間表格。
- 表格為歷程表。
- 資料庫管理程式配置參數 auto_reval 設為 DISABLED,而且發生下列其中一種情況:
- 一個以上現存視圖參照此表格。
- 一個以上現存觸發程式參照此表格。包含觸發程式 SQL 陳述式中的參照或表格中的觸發程式。
- 一個或數個現存的 SQL 函數或 SQL 方法參照此表格。
- 此表格已定義核對限制。包括已產生的直欄所造成的核對限制。
- 表格是延遲表格 SYSTOOLS.REPL_MQT_LATENCY。
- 表格具有登錄的空間直欄。
- 表格具有表示式型索引。
無法將 ALTER TABLE 陳述式中目標表格的直欄重新命名,有下列幾個原因。
- 目標表格是歷程表
- 直欄是使用隨機產生方法所產生之隨機配送表的隨機配送索引鍵直欄
使用者回應
如果錯誤是與 RENAME 陳述式相關,請先捨棄與表格相依的視圖、具體化查詢表格、觸發程式、SQL 函數、SQL 方法、核對限制、參照限制、表示式型索引或 XSR 物件,然後再發出 RENAME 陳述式。查詢型錄,就可以判斷與表格相依的物件。
- 若為相依於表格的視圖、表示式型索引或具體化查詢表格,請查詢 SYSCAT.VIEWDEP,其中表格符合 BSCHEMA 及 BNAME 直欄。
- 若為相依於表格的觸發程式,請查詢表格符合 BSCHEMA 及 BNAME 直欄的 SYSCAT.TRIGDEP。
- 若為 SQL 函數或 SQL 方法,請查詢表格符合 BSCHEMA 及 BNAME 直欄的 SYSCAT.ROUTINEDEP。
- 若為表格上的核對限制,請查詢表格符合 TABSCHEMA 及 TABBNAME 直欄的 SYSCAT.CHECKS。
- 若為具有登錄空間直欄的表格,請取消登錄空間直欄。
- 若為相依於表格的參照限制,請查詢表格符合 TABSCHEMA 及 TABNAME 直欄或 REFTABSCHEMA 及 REFTABNAME 直欄的 SYSCAT.REFERENCES。
- 若為分解目標為表格時所啟用的 XSR 物件,請查詢表格符合 BSCHEMA 及 BNAME 直欄的 SYSCAT.XSROBJECTDEP。
如果錯誤是與 ALTER TABLE 陳述式的 RENAME COLUMN 動作相關,則在目標表格是歷程表時無法直接重新命名直欄。採取下列其中一個動作,就可以重新命名直欄。
- 判斷使用歷程表的系統期間時間表格名稱,並使用該名稱作為 ALTER TABLE 陳述式的目標,以發出 RENAME COLUMN 作業。這樣會重新命名系統期間時間表格及相關聯歷程表中的直欄。
- 判斷系統期間時間表格的名稱,並使用該名稱作為 ALTER TABLE 陳述式的目標,以發出 DROP VERSIONING 作業。這會將歷程表及系統期間時間表格變更為一般表格。您現在可以重新命名原始 ALTER TABLE 陳述式中表格的直欄。請注意,如果已重新命名直欄,則表格就不再是已捨棄版本化的表格的歷程表。
如果直欄是使用隨機產生方法所產生之隨機配送表的隨機配送索引鍵直欄,則不需要任何動作。直欄是系統產生的直欄,無法重新命名。
sqlcode:-750
sqlstate:42986
SQL0751N 常式 routine-name(特定名稱 specific-name)試圖執行不容許的陳述式。
解說
用來實作常式主體的程式,不容許用來發出任何連線陳述式。如果常式為函數或方法, 則亦不容許 COMMIT 及 ROLLBACK(無 SAVEPOINT 選項)。 如果常式為程序,且於觸發程式、函數、方法或動態複合陳述式內呼叫,則程序中不容許 COMMIT 或 ROLLBACK 陳述式。
使用者回應
移除不容許的陳述式,然後重新編譯該程式。
sqlcode:-751
sqlstate:38003、42985
SQL0752N 使用 CONNECT 類型 1 設定時,無法在邏輯工作單元中連接資料庫。
解說
發出 COMMIT 或 ROLLBACK 陳述式之前即嘗試與另一資料庫或同一資料庫連線。在 CONNECT 類型 1 環境內不能處理該一要求。
使用者回應
- 要求與另一資料庫連接前,先提交 COMMIT 或 ROLLBACK 陳述式。
- 如果工作單元內有多個資料庫需要更新,請從應用程式內重新前置編譯或發出 SET CLIENT API,將連接設定變更為 SYNCPOINT TWOPHASE 和 CONNECT 2。
sqlcode:-752
sqlstate:0A001
SQL0773N CASE 陳述式找不到此事例。
解說
在 SQL 常式的常式主體中找到不含 ELSE 子句的 CASE 陳述式。 與 CASE 陳述式中指定的條件不合。
使用者回應
請變更 CASE 陳述式,以處理所有可能發生的狀況。
sqlcode:-773
sqlstate:20000
SQL0774N 該陳述式無法在 ATOMIC 複合 SQL 陳述式中執行。
解說
在 ATOMIC 複合 SQL 陳述式的環境定義中發現 COMMIT 或 ROLLBACK 陳述式。這些陳述式不容許在此環境定義中使用。
使用者回應
移除 COMMIT 或 ROLLBACK 陳述式,或變更環境定義,以使它不為 ATOMIC 複合陳述式。
sqlcode:-774
sqlstate:2D522
SQL0776N 使用游標 cursor-name 無效。
解說
在 SQL 程序中的 FOR 陳述式上,游標 cursor-name 被指定為游標名稱。 游標不能在 FOR 陳述式內的 CLOSE、FETCH 或 OPEN 陳述式上指定。
使用者回應
請移除 CLOSE、FETCH 或 OPEN 陳述式。
sqlcode:-776
sqlstate:428D4
SQL0777N 不容許使用巢狀複合陳述式。
解說
SQL 程序之常式主體中的 ATOMIC 複合陳述式不能是巢狀的。
使用者回應
請確定 SQL 程序不包含巢狀的 ATOMIC 複合陳述式。
sqlcode:-777
sqlstate:42919
SQL0778N 結束標籤 label 與開始標籤不同。
解說
在 FOR、IF、LOOP、REPEAT、WHILE 或複合陳述式的結尾所指定的標籤 label, 與陳述式開始的標籤不同。如果未指定開始標籤, 則無法指定結束標籤。
使用者回應
請確定 FOR、IF、LOOP、REPEAT、WHILE 及複合陳述式的結束標籤與開始標籤相同。
sqlcode:-778
sqlstate:428D5
SQL0779N 在 GOTO、ITERATE 或 LEAVE 陳述式指定的標籤 label 無效。
解說
標籤 label 是在 GOTO、ITERATE 或 LEAVE 陳述式中指定。此標籤未定義,或對該陳述式無效。
ITERATE 陳述式中的標籤必須是 FOR、LOOP、REPEAT 或 WHILE 陳述式的標籤。
LEAVE 陳述式中的標籤必須是 FOR、LOOP、REPEAT、WHILE 或複合陳述式的標籤。
- 如果 GOTO 陳述式是在 FOR 陳述式中定義,則 label 必須 在相同的 FOR 陳述式中定義,但巢狀 FOR 陳述式或巢狀複合陳述式除外。
- 如果 GOTO 陳述式是在複合陳述式中定義,則 label 必須 在相同的複合陳述式中定義,但巢狀 FOR 陳述式或巢狀複合陳述式除外。
- 如果 GOTO 陳述式是在 handler 中定義,則 label 必須 在相同的 handler 中遵照其他的範圍規則來定義。
- 如果 GOTO 陳述式是在 handler 外所定義,則 label 不能在 handler 內定義。
使用者回應
請在 GOTO、ITERATE 或 LEAVE 陳述式中指定有效的標籤。
sqlcode:-779
sqlstate:42736
SQL0780N UNDO 在 ATOMIC 未指定給複合陳述式時指定給 handler。
解說
UNDO 在 SQL 程序的複合陳述式中指定給 handler。只有在複合陳述式為 ATOMIC 時, 才能指定 UNDO。
使用者回應
請指定複合陳述式為 ATOMIC,或在 handler 上指定 EXIT 或 CONTINUE。
sqlcode:-780
sqlstate:428D6
SQL0781N 條件 condition-name 未定義,或者定義不在範圍中。
解說
條件 condition-name 在處理程式宣告、SIGNAL 陳述式或 RESIGNAL 陳述式中指定,但定義的條件不在包括條件參照的複合陳述式範圍中,或條件不能視為已定義的模組條件。
無法處理該陳述式。
使用者回應
透過使用包括條件參照之複合陳述式中的 DECLARE CONDITION 陳述式,或透過在參照條件所在的可見模組中定義條件,來定義條件。或者,您可以將條件參照取代為特定的 SQLSTATE 值,或移除參照條件的處理程式宣告、SIGNAL 陳述式或 RESIGNAL 陳述式。
sqlcode:-781
sqlstate:42737
SQL0782N handler 所指定的條件或 SQLSTATE 值無效。
解說
- 此條件或 SQLSTATE 值已被相同範圍中的另一個 handler 所指定。
- 此條件或 SQLSTATE 值在相同 handler 中被指定為 SQLEXCEPTION、SQLWARNING 或 NOT FOUND。
- 容錯巢狀表格表示式的 continue-handler 子句所指定的條件、SQLSTATE 值或 SQLCODE 值無效。
使用者回應
請移除處理程式中的條件、SQLSTATE 值或 SQLCODE 值。
sqlcode:-782
sqlstate:428D7
SQL0783N 在 FOR 陳述式的 DECLARE CURSOR 陳述式中,所指定的直欄名稱重複或未命名。
解說
FOR 陳述式中的選取列示必須包含唯一的直欄名稱。指定的選取清單 包含了重複的直欄名稱或未命名的表示式。
使用者回應
請在 FOR 陳述式內指定的選取清單中,指定唯一的直欄名稱。
sqlcode:-783
sqlstate:42738
SQL0784N 因為無法捨棄名稱為 constraint-name 的限制,所以陳述式失敗。
解說
搭配使用 ALTER TABLE 陳述式與 DROP CHECK 或 DROP CONSTRAINT 子句,無法捨棄定義 BUSINESS_TIME 期間時隱含產生的限制。
使用者回應
移除 ALTER TABLE 陳述式中的 DROP CHECK 或 DROP CONSTRAINT 子句。如果您需要捨棄限制,則可以在 ALTER TABLE 陳述式中使用 DROP PERIOD 子句以捨棄 BUSINESS_TIME 期間。
sqlcode:-784
sqlstate:42860
SQL0785N 宣告或使用 SQLSTATE 或 SQLCODE 變數無效。
解說
- 未宣告 SQLSTATE 為 CHAR(5)
- 未宣告 SQLCODE 為 INTEGER
- 此變數被指定了 NULL 值。
無法處理該陳述式。
使用者回應
請宣告 SQLSTATE 變數為 CHAR(5),SQLCODE 變數為 INTEGER。請在變數設定有效的值。
sqlcode:-785
sqlstate:428D8
SQL0787N RESIGNAL 陳述式不在 handler 中。
解說
RESIGNAL 陳述式只能在條件 handler 內使用。
使用者回應
請移除 RESIGNAL 陳述式,或改用 SIGNAL 陳述式。
sqlcode:-787
sqlstate:0K000
SQL0788N 未處理陳述式,因為已對更新、刪除或插入識別目標表格 table-name 的某列多次。
解說
當 MERGE 陳述式的 ON 搜尋條件或 UPDATE 陳述式的 WHERE 搜尋條件,比較目標表格中的單列與來源表格參照的多列時,即會傳回此訊息。如果目標表格中的一列符合來源表格參照的多列,則在進行更新或刪除作業時,目標橫列可能會操作多次。
使用者回應
使用下列其中一種方式來回應:
- 請更正搜尋條件,以確保目標表格中的每個橫列只能與來源表格中的一個橫列相配。
- 使用 GROUP BY 子句聚集來源表格中符合目標表格中之橫列的橫列。
- 使用 ROW_NUMBER() OLAP 表示式清理資料。
sqlcode:-788
sqlstate:21506
SQL0789N 常式、複合 SQL 陳述式或游標值建構子的參數清單,不支援參數或 SQL 變數 name 的資料類型。
解說
已發生下列其中一種狀況:
- SQL 常式(函數、方法或程序)或複合 SQL 陳述式,不支援 REFERENCE、LONG VARCHAR、LONG VARGRAPHIC 或結構化資料類型的參數或 SQL 變數。
- 其主體是複合 SQL(已編譯)陳述式、獨立式複合 SQL 陳述式或作為 SQL 方法之常式的觸發程式,不支援 XML 資料類型的參數或 SQL 變數。
- 無法為類型為 ARRAY、ROW 或 CURSOR 的參數指定預設值。
- 外部常式不支援結構化資料類型的參數。
- 游標值建構子的參數清單不支援 ARRAY、BOOLEAN、CURSOR、ROW、LONG VARCHAR、LONG VARGRAPHIC、REFERENCE 或結構化資料類型的參數。
使用者回應
執行下列任何適用的動作:
- 請不要在 SQL 常式定義或複合 SQL 陳述式中使用 REFERENCE、LONG VARCHAR、LONG VARGRAPHIC 或結構化資料類型的參數或 SQL 變數。
- 不要在觸發程式(其主體是複合 SQL(已編譯)陳述式、獨立式複合 SQL 陳述式或作為 SQL 方法的常式)中使用 XML 資料類型的參數或 SQL 變數。
- 不要在外部常式中使用結構化資料類型的參數。
- 請為參數或 SQL 變數 name 指定不同的資料類型。
- 不要為類型為 ARRAY、ROW 或 CURSOR 的參數指定預設值。
- 不要在游標值建構子的參數清單中使用 ARRAY、BOOLEAN、CURSOR、ROW、LONG VARCHAR、LONG VARGRAPHIC、REFERENCE 或結構化資料類型的參數。
sqlcode:-789
sqlstate:429BB
SQL0796N 授與角色 role-name1 給角色 role-name2 是無效的,因為它會建立循環。
解說
如果它將建立循環,無法授與角色。角色 role-name1 包含角色 role-name2(可能透過另一個角色),因此無法將它授與 role-name2。
使用者回應
若要移除將建立循環的可能性(適當的話),請從角色 role-name1 或從任何包含在 role-name1(包含 role-name2)的角色中取消角色 role-name2,然後重新提交陳述式。
sqlcode:-796
sqlstate:428GF
SQL0797N 使用了不受支援的觸發 SQL 陳述式定義觸發程式 trigger-name。
解說
觸發程式必須以觸發的 SQL 陳述式來定義,且僅能包括下列清單中的陳述式。
觸發程式可以包括下列控制陳述式:
- 複合 SQL(已編譯)陳述式
- 複合 SQL(行內)陳述式
- FOR 陳述式
- GET DIAGNOSTICS 陳述式
- IF 陳述式
- ITERATE 陳述式
- LEAVE 陳述式
- SIGNAL 陳述式
- WHILE 陳述式
AFTER 觸發程式或 INSTEAD OF 觸發程式也可包括下列觸發 SQL 陳述式:
- INSERT 陳述式
- 搜尋過的 UPDATE 陳述式
- 搜尋過的 DELETE 陳述式
- MERGE 陳述式
- CALL 陳述式
- 全選
- 分派陳述式(不包括轉移變數的分派)
使用 SQL 複合(已編譯)陳述式定義的 BEFORE 觸發程式,也可包括下列觸發 SQL 陳述式:
- INSERT 陳述式
- 搜尋過的 UPDATE 陳述式
- 搜尋過的 DELETE 陳述式
- MERGE 陳述式
- CALL 陳述式
- 全選
- 分派陳述式
如果未使用 SQL 複合(已編譯)陳述式定義 BEFORE 觸發程式,或使用 SQL 複合(已編譯)陳述式來定義 BEFORE INSERT 觸發程式,而且觸發作業在 UNION ALL 視圖上為 INSERT 或在 WITH ROW MOVEMENT 視圖上為 UPDATE,則觸發 SQL 陳述式不可包括下列項目:
- 使用修改 SQL 資料的複合 SQL(已編譯)陳述式,定義表格函數或純量函數
- 巢狀化的 DELETE、INSERT、MERGE 或 UPDATE 陳述式
在某些情況下,trigger-name 不能用於訊息中。
使用者回應
檢查觸發程式中的觸發 SQL 陳述式是否有任何陳述式不符合此訊息所述的清單,然後移除它。
sqlcode:-797
sqlstate:42987
SQL0798N 無法指定值給定義為 GENERATED ALWAYS 的直欄 column-name。
解說
當在表格中插入或更新橫列時,指定了一個值給 GENERATED ALWAYS 直欄 column-name。 除非指定了關鍵字 DEFAULT,否則不應在 INSERT 的直欄清單 或更新的 SET 子句中指定 GENERATED ALWAYS 直欄。
未執行 INSERT 或 UPDATE。
使用者回應
請在直欄清單或 SET 子句中移除 GENERATED ALWAYS 直欄,或將 DEFAULT 指定為直欄值。
sqlcode:-798
sqlstate:428C9
SQL0799W 已忽略特別暫存器 special-register-name 的 SET 陳述式,因為特別暫存器不存在於資料庫伺服器上,或指定的特別暫存器值無效。
解說
特別暫存器是資料庫管理程式針對應用程式程序所定義的儲存區。特別暫存器是用來儲存可以在 SQL 陳述式中參照的資訊。
您可以使用 SET 變數陳述式來更新部分特別暫存器。
DB2 用戶端或驅動程式可以配置為設定特別暫存器。將 DB2 用戶端或驅動程式配置為設定特別暫存器時,用戶端或驅動程式會在傳送應用程式 SQL 陳述式的同時將 SET 變數陳述式傳送給資料庫伺服器。
如果嘗試更新特別暫存器,但特別暫存器不存在於資料庫伺服器上,或指定的特別暫存器值無效,即會傳回此訊息。
如果 DB2 用戶端或驅動程式在傳送應用程式 SQL 陳述式的同時將 SET 變數陳述式傳送給資料庫伺服器,則不論設定特別暫存器成功或失敗,資料庫伺服器都會處理應用程式 SQL 陳述式。
使用者回應
如果 DB2 用戶端或驅動程式配置為設定特別暫存器,請驗證用戶端配置檔 db2dsdriver.cfg 中指定的特別暫存器設定。
sqlcode:+799
sqlstate:01527
SQL0801N 嘗試用零作除數。
解說
直欄函數或算術表示式的處理產生為零的除數。
無法處理該陳述式。對於 INSERT、UPDATE 或 DELETE 陳述式,未執行任何插入或更新。
使用者回應
請檢查 SQL 陳述式,判斷問題的原因。如果問題與資料相關,則需要檢查錯誤出現時所處理的資料。 請參閱 SQL Reference,以瞭解資料類型的有效範圍。
聯合系統使用者:檢查 SQL 陳述式,判斷問題的原因。如果問題與資料有關,請檢查當錯誤發生時,正在資料來源上處理的資料。
sqlcode:-801
sqlstate:22012
SQL0802N 發生算術溢位或其他算術異常狀況。
解說
直欄函數或算術表示式的處理造成算術溢位。
無法處理該陳述式。對於 INSERT、UPDATE 或 DELETE 陳述式,未執行任何插入或更新。
使用者回應
請檢查 SQL 陳述式,判斷問題的原因。如果問題與資料相關,則需要檢查錯誤出現時所處理的資料。 請參閱 SQL Reference,以瞭解資料類型的有效範圍。
當直欄函數無法處理 SQL 陳述式傳回的值時,也可能會傳回這個錯誤。例如, 如果針對橫列比 MAX_LONGINT_INT SQL 限制所定義的要多的表格 發出 SELECT COUNT 陳述式,將會造成算術溢位錯誤。如果表格 多於 2 147 483 647 列,請考慮使用 COUNT_BIG 直欄函數。
聯合系統使用者:檢查 SQL 陳述式,判斷問題的原因。如果問題與資料有關,請檢查當錯誤發生時,正在資料來源上處理的資料。 請參閱資料來源的對應 SQL 參照,來決定資料類型的有效範圍。
sqlcode:-802
sqlstate:22003
SQL0803N 在 INSERT 陳述式、UPDATE 陳述式或由 DELETE 陳述式所導致的外部索引鍵更新中,有一個以上的值無效,因為由 index-id 所識別的主要索引鍵、唯一限制或唯一索引,會限制表格 table-name 的索引鍵值不得重複。
解說
INSERT 或 UPDATE 物件表格 table-name 受一個以上的 UNIQUE 索引限制, 在某些直欄或直欄群組中只能有唯一的值。另外,在母表格上的 DELETE 陳述式會造成受一個以上的 UNIQUE 索引限制的相依表格 table-name 更新外部索引鍵。唯一索引可以支援表格中定義的主要索引鍵或唯一限制。 由於所要求的 INSERT、UPDATE 或 DELETE 陳述式完成時會造成重複的直欄值,所以無法處理該陳述式。 如果索引在 XML 直欄上,則索引鍵的重複值可能產生自單一 XML 文件。
另外,如果某一視圖是 INSERT 或 UPDATE 陳述式的物件, 則受限制的是定義視圖的表格 table-name。
如果 index-id 是整數值,則可以發出下列查詢以從 SYSCAT.INDEXES 中取得索引名稱:
SELECT INDNAME, INDSCHEMA
FROM SYSCAT.INDEXES
WHERE IID = <index-id>
AND TABSCHEMA = 'schema'
AND TABNAME = 'table'
其中 'schema' 代表 table-name 的綱目部分,而 'table' 代表 table-name 的表格名稱部分。
無法處理該陳述式。表格保持不變。
使用者回應
請檢查由 index-id 所識別的索引定義。
若為 UPDATE 陳述式,請確定指定的作業本身與唯一限制一致。 如果這方面並未顯示錯誤,則請檢查物件表格的內容,以決定問題的原因。
如為 INSERT 陳述式,請檢查物件表格的內容,以決定指定的值清單中,是哪個值違反唯一性限制。 或者,若 INSERT 陳述式包含子查詢,那麼,由該子查詢定址的物件表格內容,其符合必須對照物件表格內容,以決定問題的原因。 請注意,如果使用安全原則來保護表格,則您的 LBAC 認證可能不容許您查看造成錯誤的橫列。
如果索引在 XML 直欄上,且陳述式是 INSERT 或 UPDATE,請考量 XML 文件是否會導致單一 XML 文件內有重複的值。
若為 DELETE 陳述式,請檢查已識別的相依表格, 找出以規則 ON DELETE SET NULL 定義的外部索引鍵上的唯一限制。此表格的唯一索引中有一個外部索引鍵直欄無法設定成空值, 因為表格直欄中已有一個空值。
聯合系統使用者:請從使要求失敗的資料來源中找出問題,並檢查先前所列的狀況的索引定義及資料。
sqlcode:-803
sqlstate:23505
SQL0804N 現行要求的應用程式參數無效。原因碼 reason-code。 如果 SQLDA 中的主變數或 SQLVAR 無效,則:主變數/SQLVAR 號碼 = var-number、 SQLTYPE = sqltype、SQLLEN = sqllen、主變數/SQLVAR 類型 = input-or-output。
解說
處理現行要求時發生錯誤。
- 如果應用程式設計師修改了前置編譯器的輸出,或以其他方式覆寫了呼叫參數,則由前置編譯器所建立的呼叫參數列示可能有誤。
- SQL 陳述式中的 SQLDA 或主變數無效。
- 不支援此項要求或此項要求超出環境定義。
原因碼解譯如下:
- 100
不支援此項要求或此項要求超出環境定義。
- 101
SQLDA.SQLN 小於 SQLDA.SQLD
- 102
SQLVAR.SQLTYPE 無效。
聯合系統使用者:您指定的資料類型不受聯合伺服器或您想要存取的資料來源所支援。
- 103
在 SQLVAR.SQLLEN 或 SQLVAR2.SQLLONGLEN 中指定的長度對 SQLVAR.SQLTYPE 中給定的 SQL 類型而言是錯誤的。
- 104
需要將 SQLVAR 加倍,但是 SQLDA.SQLDAID 的 SQLDOUBLED 欄位卻未設為 '2'。 由於大型物件類型或結構化類型的緣故,這可能是有必要的。
- 105
雙位元組的字元「大型物件」有個 SQLVAR2.SQLDATALEN 指標所指示的奇數值,此值永遠都是以位元組來計算,即使 DBCLOB 也是如此。
- 106
SQLDATA 指標無效,或所指的儲存體不足。
- 107
SQLIND 指標無效,或所指的儲存體不足。
- 108
SQLDATALEN 指標無效,或所指的儲存體不足。
- 109
現行 SQL 陳述式需要特定數量的主變數/SQLVARS。
- 110
LOB 定位器未連結類型相容的 LOB。
- 111
SQLVAR 的 SQLTYPE 指出 LOB,但是第二個 SQLVAR 是空值。
- 112
SQLDATATYPE NAME 欄位無效。它與識別資料庫中現存使用者定義類型的格式不符, 識別現存使用者定義類型的格式如下: 8 位元組,後接句號,再接 18 位元組。
- 113
SQLFLAG4 欄位無效。如果指定了結構化類型,則值必須為 X'12'。如果指定了參照類型, 則值必須為 X'01'。否則皆為 X'00'。
- 115
對於無法包含 XML 資料的 SQLVAR.SQLTYPE,已在 SQLVAR.SQLNAME 欄位中設定「XML 次類型指示器」。
在有主變數的 SQL 陳述式中,請使用主變數號碼來從陳述式(或是複合 SQL 的子陳述式)的開頭計算,以尋找無效的主變數。若是使用 SQLDA 的陳述式,則要使用 SQLVAR 號碼來尋找無效的 SQLVAR。若是輸入 SQLDA,只要計算輸入主變數或 SQLVAR;輸出亦然。請注意:此數目是以 1 為基準。
無法處理該陳述式。
使用者回應
請檢查應用程式有無任何提到的錯誤。請注意,程式設計師不應嘗試修改前置編譯器輸出。
聯合系統使用者:如果收到原因碼 102,請指定支援的資料類型,並重新提交程式。
sqlcode:-804
sqlstate:07002
SQL0805N 找不到套件 package-name。
解說
由於型錄中找不到所需的套件,所以無法完成陳述式。
package-name 的格式為下列其中一種:
- 'pkgschema.pkgname 0Xcontoken',其中一致性記號以十六進位來提供。
- 'pkgschema.pkgname.pkgversion',如果套件版本為空字串,則將 '.pkgversion' 從名稱中省略。
- '%.pkgname',如果設定了 CURRENT PACKAGE PATH。CURRENT PACKAGE PATH 中的綱目名稱集是由百分比字元 ('%') 來表示。
造成此訊息 (SQLCODE) 的可能原因為:
- 未連結或已捨棄套件。
- 執行 DB2 公用程式或 CLI 應用程式時,DB2 公用程式可能需要重新連結至資料庫。
- 如果設定了 CURRENT PACKAGE PATH,則為 '%.pkgname';但在 CURRENT PACKAGE PATH 中的任何綱目中都找不到名稱為 'pkgname' 的套件。
注意,當 version-id 正用於給定的 package-schema.package-name 時, 可能會出現以相同套件綱目及套件名稱定義的套件,但是由於現存的套件與所要求的版本或一致性記號不相符,所以找不到正確的套件。必須與 package-name 的三個部分全部都相符,才是相符的套件。 使用多個版本時,此訊息的其他原因有:
- 正在執行的應用程式版本已前置編譯、編譯及鏈結,但未連結,或者已連結但該套件版本後來被捨棄。
- 應用程式已前置編譯及連結,但未編譯及(或)鏈結,所以正在執行的應用程式不是最新的。
- 已從一個連結檔案連結套件,該連結檔案由來源檔的不同前置編譯所產生,而非由產生已修改來源檔(已編譯及鏈結至應用程式可執行檔)的前置編譯所產生。
- 新的應用程式連結到與現存套件的名稱(和版本)相同的套件,因此置換了現存套件。如果執行與所置換的套件相關的應用程式,將導致此錯誤。
在所有情況中,如果所要求的一致性記號與現存版本的一致性記號不相符,就會認為找不到套件。
無法處理該陳述式。
使用者回應
請指定正確的套件名稱或連結程式。如果執行中的應用程式未連結到資料庫,請聯絡資料庫管理者以執行必要的連結。 請確定應用程式或執行的物件模組為已編譯及鏈結修改的原始碼,該原始碼與產生套件的前置編譯及連結相關。
如果設定了 CURRENT PACKAGE PATH,請確定已在 CURRENT PACKAGE PATH 中指定了包括套件的綱目。
下列 SQL 陳述式可用於查詢型錄,以判定是否存在不同版本的套件。
SELECT PKGSCHEMA, PKGNAME,
PKGVERSION, UNIQUE_ID
FROM SYSCAT.PACKAGES
WHERE PKGSCHEMA = 'pkgschema'
and PKGNAME='pkgname'.
請注意,UNIQUE_ID 直欄會對應一致性記號。
如果 DB2 公用程式需要重新連結至資料庫,資料庫管理者可以 在連接到資料庫時,從實例的 bnd 次目錄發出下列其中一項 CLP 指令:
- 用於 DB2 公用程式的 "db2 bind @db2ubind.lst blocking all grant public"。
- 用於 CLI 的 "db2 bind @db2cli.lst blocking all grant public"。
聯合系統使用者:確定已在適當的資料來源中,連結了聯合伺服器所需的套件。如需將套件連結至資料來源的相關資訊,請參閱 Federated Systems Guide。
sqlcode:-805
sqlstate:51002
SQL0808N CONNECT 陳述式的語意與其他現存連接的語意不一致。
解說
CONNECT 陳述式衍生的原始檔案,經前置編譯的連接選項 (SQLRULES、CONNECT 類型、SYNCPOINT 或 RELEASE 類型),與需要連接的原始檔案的連接選項不同。
使用者回應
請確定使用同樣的 CONNECT 選項來前置編譯所有的原始檔案, 若不可能如此,則於發出第一個 CONNECT 陳述式前,先呼叫 SET CLIENT api,以設定應用程式處理所要的選項。
sqlcode:-808
sqlstate:08001
SQL0811N 純量全選、SELECT INTO 陳述式或 VALUES INTO 陳述式的結果有多橫列。
解說
下列原因之一造成此種錯誤:
- 執行暗含的 SELECT INTO 或 VALUES INTO 陳述式,產生多於一橫列的結果表格。
- 執行純量全選,產生多於一橫列的結果表格。
聯合系統使用者:聯合伺服器或資料來源可以偵測到這種狀況。
無法處理該陳述式。
使用者回應
請確定陳述式包含適當的條件說明。結果若是如此,則可能是資料問題,造成預期傳回一個橫列資料時,卻傳回多個橫列資料。
聯合系統使用者:請從使要求失敗的資料來源中找出問題,並檢查該物件的選取準則及資料。
sqlcode:-811
sqlstate:21000
SQL0817N 不能執行 SQL 陳述式,否則會產生禁止的更新作業。
解說
- 應用程式是以 IMS 純查詢交易的方式執行。
- 應用程式是一個 IMS 或 CICS 應用程式,會更新遠端 DBMS(不支援兩階段確定)的資料。
- 應用程式想更新多處資料,其中一處不支援兩階段確定。
這些 SQL 陳述式包括 INSERT、UPDATE、DELETE、CREATE、ALTER、DROP、GRANT 和 REVOKE。
無法執行陳述式。
使用者回應
如果應用程式是以 IMS 純查詢交易的方式執行,請系統程式設計人員變更這個執行應用程式的交易純查詢狀態。
如果 IMS 或 CICS 應用程式想執行遠端更新,必須把應用程式改成在伺服器 DBMS 中以區域應用程式的方式執行,或升級伺服器 DBMS 讓它支援兩階段確定。
如果應用程式想更新多處資料,必須變更應用程式,或讓所有相關 DBMS 升級支援兩階段確定。
sqlcode:-817
sqlstate:25000
SQL0818N 發生時間戳記衝突。
解說
前置編譯時由前置編譯器產生的時間戳記,與連結時和套件一同儲存的時間戳記不同。
- 應用程式已前置編譯、編譯及鏈結,但未連結。
- 應用程式已前置編譯及連結,但未編譯及(或)鏈結,所以正在執行的應用程式不是最新的。
- 已從一個連結檔案連結套件,該連結檔案由來源檔的不同前置編譯所產生,而非由產生已修改來源檔(已編譯及鏈結至應用程式可執行檔)的前置編譯所產生。
- 新的應用程式已用與現存套件的名稱相同的名稱進行連結,因此置換了現存的套件。如果執行與所置換的套件相關的應用程式,將導致此錯誤。
聯合系統使用者:除了前面所列示的原因外,問題也有可能是因為沒有在所有適當的資料來源上,連結必要的套件。
無法處理該陳述式。
使用者回應
請使用與物件模組相符的程式的連結檔再次連結應用程式。或者,執行與資料庫中儲存的套件對應的程式。
如果正在安裝範例資料庫,請記錄這則訊息的號碼和文字,然後聯絡技術服務代表。
聯合系統使用者:除了先前所列示的動作之外,確定已在適當的資料來源中, 連結聯合伺服器所需的套件。如需將套件連結至資料來源的相關資訊,請參閱 Federated Systems Guide。
sqlcode:-818
sqlstate:51003
SQL0822N SQLDA 包含無效的資料位址或指示器變數位址。
解說
應用程式在 SQLDA 中放置一個無效的位址。
無法處理該陳述式。
使用者回應
請更正應用程式,以使 SQLDA 中放置有效的位址。
sqlcode:-822
sqlstate:51004
SQL0840N 在 SELECT 列示中,傳回了過多的登錄 。
解說
SELECT 列示中傳回的登錄 數,超過可允許的最大值。 SELECT 清單(不在共用表格表示式上)的最大值為 1012。 在共用表格表示式中的 SELECT 列示的最大值為 5000。
無法處理該陳述式。
使用者回應
請決定是否所有資訊都是確實需要的。(請注意, 在 SQL 陳述式 SELECT * from A,B,C 中由 SELECT list * 傳回的項目數,是所有三個表格中直欄數的總和。) 若有可能,請重寫 SQL 陳述式,讓它只會傳回必要的資訊項目。如果所有資訊都是需要的,請將 SQL 陳述式分成兩個或多個陳述式。
sqlcode:-840
sqlstate:54004
SQL0842N 至伺服器 server-name 的連線已存在。
解說
SQLRULES(STD) 目前是有效的,且 CONNECT 陳述式識別一現存的 SQL 連接。
使用者回應
- 若伺服器名稱不是預定的名稱,請更正它。
- 若 SQLRULES(STD) 是有效的,且 CONNECT 陳述式識別現存的 SQL 連接,則請用 SET CONNECTION 置換 CONNECT,或將選項變更為 SQLRULES(DB2)。
請更正應用程式中的錯誤,然後再試一次。
sqlcode:-842
sqlstate:08002
SQL0843N 伺服器名稱不指定現存的連接。
解說
陳述式、指令或 API 指定的伺服器名稱,不識別應用程式處理的現存 SQL 連接。
- SET CONNECTION 陳述式
- RELEASE 陳述式
- DISCONNECT 陳述式
- SET 或 QUERY CLIENT INFORMATION
使用者回應
- 若伺服器名稱不是預定的名稱,請更正它。
- 請確定已建立與伺服器的連接,且於為該連接發出要求。
請更正應用程式中的錯誤,然後再試一次。
sqlcode:-843
sqlstate:08003
SQL0845N 在 NEXT VALUE 表示式於順序 sequence-name 的現行階段作業中產生一值之前,無法使用 PREVIOUS VALUE 表示式。
解說
PREVIOUS VALUE 表示式已指定順序 sequence-name,但尚未產生這個順序的值。必須在這個階段作業中發出 NEXT VALUE 表示式,以產生這個順序的值,然後才可以發出順序的 PREVIOUS VALUE 表示式。
使用者回應
在階段作業中發出相同順序的任何 PREVIOUS VALUE 表示式之前,發出順序的至少一個 NEXT VALUE 表示式。
sqlcode:-845
sqlstate:51035
SQL0846N 識別直欄或順序物件 object-type object-name 的規格無效。原因碼 = reason-code。
解說
- 不支援識別直欄或順序物件的基礎資料類型。 識別直欄及順序物件支援下列資料類型:SMALLINT、INTEGER、BIGINT 及小數位數零的 DECIMAL(或 NUMERIC)。
- START WITH、INCREMENT BY、MINVALUE 或 MAXVALUE 的值在 identity 直欄或順序物件的資料類型範圍之外。
- MINVALUE 必須小於或等於 MAXVALUE。
- 對 CACHE 指定的值無效。此值必須是具有最小值 2 的 INTEGER。
使用者回應
請更正語法,並重新提交陳述式。
sqlcode:-846
sqlstate:42815
SQL0857N 已指定衝突的選項(option1、option2)。
解說
指定衝突的選項。 必須一起指定 option1 及 option2,或者不可一起指定這兩個選項。
如果在定義直欄時指定 IMPLICITLY HIDDEN,則直欄也必須定義為 ROW CHANGE TIMESTAMP 直欄。
無法執行陳述式。
使用者回應
視選項而定,一起指定選項或不一起指定選項。
sqlcode:-857
sqlstate:42867
SQL0859N 存取「交易管理程式資料庫」失敗,SQLCODE 為 SQLCODE。
解說
- 未建立它。
- 資料庫管理程式配置檔的 tm_database 欄位尚未用資料庫名稱更新和啟動。
- 資料庫存在,但是與資料庫的通訊失敗。
使用者回應
- 參照隨此訊息傳回的 SQLCODE,並遵循對該 SQLCODE 適當的動作。
- 請驗證 tm_database 是存在的;若不存在, 則建立新的資料庫或選取目前存在的資料庫,以作為 TM 資料庫。 如果磁碟儲存體上沒有嚴重的限制,建議您建立一個別的資料庫。
- 如果 TM 資料庫的資料庫管理程式配置尚未更新,則請使用欄位 tm_database 更新它。
- 驗證可與 tm_database 連接。 例如,使用「指令行處理器」嘗試連接。
- 確定選擇的 tm_database 不是經由 DB2 Connect 存取的資料庫。
sqlcode:-859
sqlstate:08502
SQL0863W 雖已連接成功,但是只可使用單一位元組字元。
解說
伺服器資料庫和用戶端應用程式在不同的語言型類中使用字碼頁, 但是不保證 7 位元 ASCII 範圍以外的字元(所有字碼頁都有 7 位元 ASCII 範圍內的字元)。 例如,連接日文和 Latin-1 字碼頁時,日文字元不適用於 Latin-1 字碼頁,所以應該避免這些字元(英文字元不受影響)。
- 聯合資料庫支援單一位元組及雙位元組字元,但資料庫用戶端系統僅支援單一位元組字元。
- 資料來源支援單一位元組及雙位元組字元,但聯合系統僅支援單一位元組字元。
使用者回應
勿提交使用在應用程式與資料庫字碼頁之間不是通用的字元的 SQL 陳述式或指令。
聯合系統使用者:所提交的 SQL 陳述式或指令所使用的字元,必須是在用戶端系統、聯合系統及資料來源之間通用的字元。
sqlcode:+863
sqlstate:01539
SQL0864N 參照限制 constraint-name 已嘗試在表格 table-name 中修改 SQL 資料變更陳述式已在全選內修改的橫列。
解說
已在 FROM 子句中指定了 SQL 資料變更陳述式,但是 SQL 資料變更陳述式的基礎目標基本表格具有一個修改相同表格的參照限制。 這是不允許的。
無法處理該陳述式。
使用者回應
避免在 FROM 子句內使用 SQL 資料變更陳述式,或變更參照限制, 以便它不會修改作為 SQL 資料變更陳述式之目標的表格。
sqlcode:-864
sqlstate:560C6
SQL0865N 無效的 tm_database 值。
解說
選擇作為資料庫管理程式配置中的 tm_database 的資料庫是無效的。 資料庫必須是 DB2 V2.1 或更新的層次,而且不能是經由 DRDA 通訊協定(亦即經由 DB2 Connect)存取的資料庫。
無法執行陳述式。
使用者回應
- 更新資料庫管理程式配置,為 tm_database 參數指定有效的資料庫。
- 發出 db2stop 和 db2start,以確定變更生效。
sqlcode:-865
sqlstate:08001
SQL0866N 資料伺服器驅動程式或資料伺服器用戶端已終止與名稱為 database-name 資料庫的連線,因為 db2dsdriver.cfg 檔案的 <alternategroup> 區段無效。
解說
如果資料庫的連線失敗,您可以使用 db2dsdriver.cfg 檔案的 <alternategroup> 區段,為自動用戶端重新遞送指定多個要連接的替代資料庫伺服器。DB2 for Linux, UNIX, and Windows 及 DB2 for z/OS 伺服器支援此功能。
當連接至 DB2 for z/OS 資料庫伺服器時,db2dsdriver.cfg 檔案的 <alternategroup> 區段內容有一些限制。如果名稱為 db_A 的資料庫位於 DB2 for z/OS 資料庫伺服器,則 db_A 的 <alternategroup> 區段中不能有多個 <database> 項目。
發生下列其中一種狀況時,即會傳回此訊息:
- 名稱為 database-name 的資料庫所在的資料庫伺服器不支援替代群組。
- db2dsdriver.cfg 內容不滿足 <alternategroup> 區段的 DB2 for z/OS 限制。
使用者回應
在 db2dsdriver.cfg 檔案中,修改與給定資料庫 (database-name) 相關的 <alternategroup> 區段,讓那些項目及區段滿足 <alternategroup> 支援限制:
- 移除 db2dsdriver.cfg 檔案中的 <alternategroup> 區段。
- 只在 <alternategroup> 區段中指定一個資料庫項目。
sqlcode:-866
sqlstate:08001
SQL0868N 嘗試使用 USER/USING 子句 CONNECT 已有連接存在的伺服器。
解說
與伺服器的現行或休止連接已存在,因此嘗試使用 USER/USING 子句 CONNECT 此伺服器是無效的。
使用者回應
- 使用 SET CONNECTION 陳述式,使與 DORMANT 連接的連接成為現行的。
- 若應用程式正在使用 SQLRULES(DB2),請使用不含 USER/USING 的 CONNECT 陳述式。
- 完成現存的工作單元,切斷連接,然後使用 USER/USING 重新連接。
sqlcode:-868
sqlstate:51022
SQL0873N 以不同編碼方法編碼的物件,無法在相同的 SQL 陳述式中被參考。
解說
SQL 陳述式中參照的所有表格、SQL 函數及 SQL 方法並非使用相同的編碼方法來定義。
- 一個使用 ASCII 或 Unicode 編碼方法建立的表格在陳述式中和不是使用相同編碼方法建立的表格作參照
- 一個使用 ASCII 或 Unicode 編碼方法建立的 SQL 函數或 SQL 方法在陳述式中和不是使用相同編碼方法建立的表格作參照
- 導出 (sourced) 函數是用不同於來源函數的編碼方法建立
- 異常狀況表格是用不同於作業基本表格的編碼方法建立
使用者回應
請更正 SQL 陳述式,只讓具有相同編碼方法的物件會被參照。
sqlcode:-873
sqlstate:53090
SQL0874N 所有參數的 CCSID 必須與常式的 PARAMETER CCSID 相符。
解說
常式的所有參數都必須使用和常式本身相同的編碼方法。如果參數指定了 CCSID,則它必須隱含地或明確地符合常式所指定的 PARAMETER CCSID 選項。
使用者回應
將 CCSID 選項從參數移除或變更陳述式,如此所指定的都是相同的 CCSID 值。
sqlcode:-874
sqlstate:53091
SQL0880N SAVEPOINT savepoint-name 不存在或在此環境定義中無效。
解說
在發出 RELEASE 或 ROLLBACK TO SAVEPOINT savepoint-name 陳述式時發生錯誤。 可能沒有那個名稱的儲存點存在,或該儲存點是建立在現行 ATOMIC 執行環境定義之外。
無法處理該陳述式。
使用者回應
請在陳述式中更正儲存點名稱,並重新發出陳述式。
sqlcode:-880
sqlstate:3B001
SQL0881N 名稱為 savepoint-name 的 SAVEPOINT 已存在, 但是無法重覆使用這個儲存點名稱。
解說
在 SAVEPOINT 陳述式中已使用名稱 savepoint-name。無法重覆使用 此儲存點名稱,因為至少有一個使用此名稱的 SAVEPOINT 陳述式也指定了 UNIQUE 關鍵字,此關鍵字宣稱該名稱必須是唯一的。
無法處理該陳述式。未設定新儲存點, 名稱相同的舊儲存點仍然存在。
使用者回應
請為此儲存點選擇另一個名稱,並重新發出 SAVEPOINT 陳述式。如果必須重覆使用 這個現存的儲存點名稱,請發出 RELEASE SAVEPOINT 陳述式,以釋放現存的儲存點。 但是請注意,RELEASE SAVEPOINT 陳述式同時也會釋放 在指定之儲存點建立後的交易中所建立的所有儲存點。相關資訊,請參閱「SQL 參照」。
sqlcode:-881
sqlstate:3B501
SQL0882N 儲存點不存在。
解說
在發出 ROLLBACK TO SAVEPOINT 陳述式時發生錯誤。 當沒有現存的儲存點時, 發出 ROLLBACK TO SAVEPOINT 而不指定特定儲存點名稱是不被容許的。
無法處理該陳述式。
使用者回應
請發出不同的陳述式,或嘗試用 ROLLBACK 陳述式來 Rollback 整個交易。
sqlcode:-882
sqlstate:3B502
SQL0900N 應用程式狀態錯誤。資料庫連接不存在。
解說
- 應用程式狀態中的嚴重錯誤,造成資料庫連接失去。
- 應用程式可能已從資料庫切斷連接,但在執行下一個 SQL 陳述式前並未建立新的現行連接。
- 要求切換可信任連線中的使用者失敗。
使用者回應
切換至現存的閒置連線(使用 CONNECT TO 或 SET CONNECTION)、建立新的連線(使用 CONNECT)或是成功地在可信任連線中切換至另一個使用者,以重建現行連線。
sqlcode:-900
sqlstate:08003
SQL0901N SQL 陳述式或指令因為資料庫系統錯誤而失敗。(原因 reason。)
解說
有許多狀況可能會傳回此訊息。以下是可能傳回此訊息的兩個狀況範例:
- Windows 作業系統:在 Windows 作業系統上可能傳回此錯誤的原因之一,是防毒或防火牆軟體防止資料庫管理程式讀取或寫入 DB2 資料庫或資料庫管理程式相關檔案。
- 移轉及升級狀況:升級至新版本之後或套用修正套件之後可能傳回此錯誤的原因之一,是因為一個以上的表格、關聯索引或統計視圖的相關統計資料未保持最新。
在某些情況下,雖然嘗試執行此 SQL 陳述式失敗,但未來嘗試執行此 SQL 陳述式或其他陳述式可能會成功。
執行時期記號 reason 可能是空的,或它可能包含 IBM 軟體支援中心人員專用的英文字。
使用者回應
請執行下列疑難排解步驟,以回應此錯誤:
- Windows 作業系統:
停用防毒或防火牆軟體。
如果防毒或防火牆軟體已安裝在安裝 DB2 資料庫的電腦上且正在執行中,請停用防毒或防火牆軟體並重新執行陳述式,以判斷防毒或防火牆軟體是否導致此問題。
如果停用防毒或防火牆軟體可解決此問題,請在重新啟用防毒或防火牆軟體之前,將下列 DB2 資料庫相關目錄新增為例外狀況:
- "IBM\\sqllib" - DB2 資料庫應用程式檔案
- "IBM\\DB2" - 資料庫管理程式實例
- "<install-drive>\\DB2" - 資料庫分割區目錄
- 移轉及升級狀況:
使用 RUNSTATS 指令更新統計資料,然後重新執行陳述式。
- 聯合環境:
- 判斷哪一個聯合資料來源或聯合資料庫伺服器傳回錯誤。
- 收集診斷資訊,並對傳回錯誤的資料來源或聯合資料庫伺服器執行疑難排解步驟。
由於各資料來源的問題判斷程序並不相同,請參閱傳回錯誤的資料來源或聯合資料庫伺服器的診斷及疑難排解參照資訊。
如果在執行所述的疑難排解步驟之後仍繼續發生錯誤,請聯絡 IBM 軟體支援中心以尋求協助:
- 使用追蹤機能收集診斷資訊,例如「DB2 追蹤」及「獨立追蹤機能」。
- 收集下列診斷資訊:
- 問題說明
- SQLCODE
- 原因 reason
- SQLCA 內容(可能的話)
- 追蹤檔案(可能的話)。
- 請聯絡 IBM 軟體支援中心。
sqlcode:-901
sqlstate:5UA0L、58004
SQL0902C 發生系統錯誤。 無法處理後續的 SQL 陳述式。IBM 軟體支援中心原因碼:reason-code。
解說
如果資料庫管理程式發生嚴重錯誤(例如嚴重作業系統錯誤),或存取儲存媒體時發生錯誤而使得資料庫無法繼續可供使用,則會傳回此訊息。在不同的狀況中,資料庫管理程式可能會發生作業系統錯誤或嚴重媒體錯誤。以下是可能傳回此訊息的狀況範例之一:
- 當資料庫管理程式資源需要號誌,但沒有足夠的號誌可滿足此要求時,會傳回此訊息。
執行時期記號 reason-code 有時可能是空的,而且只是用來協助 IBM 軟體支援中心人員。
使用者回應
請執行下列疑難排解步驟以回應此訊息:
- 檢閱 db2diag 日誌檔中的診斷資訊,以識別傳回此訊息之前發生的錯誤。
- 如果 db2diag 日誌檔中有訊息指出所要求的號誌太多,或沒有足夠的號誌可服務資料庫管理程式要求,請使用作業系統參數增加號誌數目。
如果在執行所述的疑難排解步驟之後仍繼續發生錯誤,請聯絡 IBM 軟體支援中心以尋求協助:
- 使用追蹤機能收集診斷資訊,例如「DB2 追蹤」及「獨立追蹤機能」。
- 收集下列診斷資訊:
- 問題說明
- SQLCODE
- 原因 reason
- SQLCA 內容(可能的話)
- 追蹤檔案(可能的話)
- 請聯絡 IBM 軟體支援中心。
聯合系統使用者:請從使要求失敗的資料來源中找出問題,並對該資料來源採取必要的診斷步驟。資料來源的問題判斷程序常有變化,所以請參閱合適的資料來源手冊。
sqlcode:-902
sqlstate:58005
SQL0903N COMMIT 陳述式失效,交易已 Rollback。原因碼:reason-code。
解說
一個或多個參與現行工作單元的伺服器無法準備要確認的資料庫。COMMIT 陳述式已失效且交易已 Rollback。如果只有一個伺服器參與現行工作單元,則反而可能已確定交易。
可能的原因碼是:
- 01
與參與工作單元的其中一個資料庫的連接已遺漏。
- 02
參與工作單元的其中一個 資料庫或節點 已被存取,但無法準備確定。
聯合系統使用者:如果您所連接的資料庫是一個使用暱稱的聯合伺服器資料庫, 則暱稱所需的其中一個資料來源無法準備確定。
- 03
參與工作單元的 DB2 Data Links Manager 無法準備確定。
- 04
有一個以上建立的暫存表格或宣告的暫存表格狀態不一致。
- 05
發生非預期的錯誤。請檢查管理通知日誌,以取得詳細資訊。
聯合系統使用者: 如果您所連接的資料庫是一個使用暱稱的聯合伺服器資料庫,則失去了與資料庫內暱稱所需的其中一個資料來源的連線。
- 06
無法將「重新同步化資訊」傳送給其中一位參與者。參與者只支援 IPv4。請針對參與者啟用雙堆疊模式。
使用者回應
若已失去與資料庫的連接,請重新建立連接。 如果失效與連接無關,則請參照遠端系統上的錯誤偵錯日誌, 以決定失效的性質以及可能需要的動作。 請重新執行應用程式。
sqlcode:-903
sqlstate:40504
SQL0904N 無法使用的資源引起了不成功的執行。原因碼:reason-code, 資源類型:resource-type,及資源名稱:resource-name。
解說
無法執行 SQL 陳述式,因為類型為 resource-type 的資源 resource-name 此時無法使用, reason-code 指出原因。 請參閱 DB2 for MVS 的「問題與解決方案」文件,取得資源類型字碼的說明。
使用者回應
驗證無法使用的資源的身分。 欲判斷資源為什麼無法使用,請參閱所指定的 reason-code。
sqlcode:-904
sqlstate:57011
SQL0905N 因為超出了資源限制,所以無法順利執行。資源名稱 = resource-name,限制 = limit-amount1 CPU 秒數(limit-amount2 個服務單元)衍生自 limit-source。
解說
已終止 SQL 陳述式的執行,因為已超出資源限制。
已超出其限制的資源名稱為 resource-name。 它同時也是資源限制規格表格(限制從其中衍生出來)中的直欄名稱。 以 CPU 秒數計,超出的限制為 limit-amount1, 以服務單元計,則是 limit-amount2。 resource-name 可以是 ASUTIME,即是每一個 SQL 陳述式所容許的 CPU 秒數。 所容許的 CPU 最大秒數為 limit-amount1。 服務單元中的最大數目為 limit-amount2。
用來衍生限制數量的來源為 limit-source,且為資源限制規格表格的名稱,或是「系統參數」的名稱。 如果來源是一個系統參數,則資源限制規格表格未含有一個適用的登錄,或是當存取表格時,發生了一個錯誤。 在任一情況中,限制是取自於安裝(系統)參數。
使用者回應
判斷為什麼這個 SQL 陳述式的執行時間這麼久,並採取適當的動作。 請考慮簡化 SQL 陳述式,重組表格及索引,或是聯絡負責維護資源限制規格表格的安裝群組。
收到這個回覆碼的應用程式可以執行其他的 SQL 陳述式。
sqlcode:-905
sqlstate:57014
SQL0906N 無法執行 SQL 陳述式,因為這個這個函數已停用,這是由於先前的錯誤所導致的。
解說
無法執行 SQL 陳述式,因為先前的錯誤已停用了所要求的函數。 如果應用程式阻止了一個異常終止(例如,透過 PL/I 程式中的 ON ERROR 條件),且繼續執行 SQL 陳述式,可能會引起這種情況。 如果 DB2 CICS 交易發生了一個建立緒錯誤,且不先發出 SYNCPOINT ROLLBACK,而繼續發出 SQL 要求,也可能引起這種情況。
使用者回應
一般說來,一旦收到這個回覆碼,應用程式即應終止執行。應用程式想執行其他 SQL 陳述式的所有後續嘗試也會因相同的回覆碼而失效。 在 DB2 CICS 交易的情況中,如果 SQLCA 中的 SQLERRP 欄位含有模組名稱 DSNCEXT1,則交易可能會發出 SYNCPOINT ROLLBACK 並繼續處理。如果交易選擇了 ROLLBACK 並繼續處理,它必須有能力更正引起建立緒錯誤發生的情況。
sqlcode:-906
sqlstate:24514、51005、58023
SQL0907N 已嘗試使用限制或觸發程式 name 來修改 MERGE 陳述式的目標表格 table-name。
解說
MERGE 陳述式啟動限制或觸發程式 name 來更新、插入或刪除表格 table-name 的資料, 此表格也是 MERGE 陳述式的目標表格或相同表格階層結構內的表格。 這是不容許的。
使用者回應
變更 MERGE 陳述式以移除會造成限制或觸發程式啟動的作業,或是變更具有限制或觸發程式的表格,以移除目標表格的參照。
sqlcode:-907
sqlstate:27000
SQL0908N bind-type 錯誤,使用 auth-id 權限 BIND、REBIND 或 AUTO_REBIND 作業是不容許的。
解說
- bind-type
- 連結作業的類型(BIND, REBIND 或 AUTO-REBIND)。
- auth-id
- BIND 次指令的呼叫程式的授權 ID,或是 AUTO-REBIND 作業的計劃的呼叫程式的授權 ID。
使用者回應
如果指定的授權 ID 應該容許連結,請變更作用中 RLST 表格中的登錄。 如果已停用 AUTO-REBIND 作業,請在重新執行套件之前,先重新連結套件。
sqlcode:-908
sqlstate:23510
SQL0909N 已刪除物件。
解說
應用程式 (1) 已捨棄表格,但隨後又嘗試存取它,或 (2) 已捨棄索引,但隨後又使用該索引,來存取它的物件表格。
使用者回應
必須更正應用程式的邏輯,以便在捨棄物件後,它不會再嘗試存取或使用該物件。
在應用程式內捨棄索引是非常危險的,因為沒有任何方法,可用來判斷已為應用程式產生的計劃(透過 BIND 或 REBIND)實際上是否會使用某一個索引來存取它的物件表格。
sqlcode:-909
sqlstate:57007
SQL0910N SQL 陳述式不能存取有修改擱置的物件。
解說
應用程式嘗試存取同一工作單元中的物件,在此工作單元中:
- 應用程式對物件或相關的物件(例如:表格的索引)發出 DROP
- 應用程式對新增或終止限制的物件發出陳述式。
- 應用程式發出 DROP TRIGGER 或 CREATE TRIGGER 陳述式,直接或間接地影響物件。
- 應用程式發出發出 ROLLBACK TO SAVEPOINT 陳述式, 使物件呈修改擱置狀態。
- 應用程式發出一個陳述式,使 NOT LOGGED 建立的暫存表格或宣告的暫存表格的所有橫列都被刪除。
- 應用程式對物件(在此情況下為表格)發出了 ALTER TABLE ... ADD PARTITION、ALTER TABLE ... ATTACH PARTITION 或 ALTER TABLE ... DETACH PARTITION 陳述式。 如果工作單元包含 ALTER TABLE ... ATTACH PARTITION,那麼後續在相同的工作單元中,無法於相同的表格上執行 ALTER TABLE ... DETACH PARTITION。
- 應用程式發出 DETACH,以從分割之 MDC 表格中的資料分割區來建立這個物件。
- 應用程式發出 SQL 陳述式,試圖存取修改擱置的信任環境定義物件。SQL 陳述式可能是下列其中一項:
- ALTER TRUSTED CONTEXT
- CREATE TRUSTED CONTEXT
- DROP TRUSTED CONTEXT
- 應用程式已發出 CREATE USER TEMPORARY TABLESPACE 陳述式或 ALTER TABLESPACE 陳述式。如果工作單元包含 CREATE USER TEMPORARY TABLESPACE 陳述式或 ALTER STATEMENT 陳述式,則後續在相同的工作單元中,無法參照實例化表格的已建立暫存表格。
或應用程式已發出 SQL 陳述式,嘗試存取擱置修改的 WLM 物件。 SQL 陳述式可能是下列其中一項:
- ALTER HISTOGRAM TEMPLATE
- ALTER THRESHOLD
- ALTER SERVICE CLASS
- ALTER WORK ACTION
- ALTER WORK CLASS
- ALTER WORKLOAD
- CREATE HISTOGRAM TEMPLATE
- CREATE THRESHOLD
- CREATE SERVICE CLASS
- CREATE WORK ACTION
- CREATE WORK CLASS
- CREATE WORKLOAD
- DROP(捨棄)任一個物件:HISTOGRAM TEMPLATE、THRESHOLD、SERVICE CLASS、WORK ACTION、WORK CLASS、WORKLOAD
- GRANT(工作量專用權)
- REVOKE(工作量專用權)
聯合系統使用者:除了先前所列的原因外,其他資料來源的特定限制可能已存在,因而阻止了物件的存取。
無法處理 SQL 陳述式。
使用者回應
修改應用程式,勿嘗試存取已作修改的同一工作單元內的物件。通常,在不同的工作單元裡隔離「資料定義語言 (DDL)」陳述式比隔離存取相同物件的「資料操縱語言 (DML)」陳述式好。
必須先確定或 Rollback 工作單元,才能成功地處理失效的陳述式。如果已確定的修改使得物件被捨棄,則必須重建物件,以便能夠順利地處理失效的 SQL 陳述式。
如果物件是在 SAVEPOINT 內修改,請修改應用程式,使它不會 在發出 ROLLBACK TO SAVEPOINT 陳述式之後試圖存取物件。 存取修改之物件並在 ROLLBACK TO SAVEPOINT 時呈開放狀態的游標將無法存取。 請修改應用程式,使它關閉游標。
如果與 NOT LOGGED 建立的暫存表格或宣告的暫存表格相關的插入、刪除或更新失敗,則會刪除該表格中的所有橫列。所有在失敗時對該表格開放的游標將無法存取,而且應該會由應用程式關閉。
如果 ALTER TABLE ... DETACH PARTITION 因為 ALTER TABLE ... ATTACH PARTITION 擱置而失敗,請使用二個不同的工作單元來執行這二項作業。
如果 SQL 陳述式試圖存取信任環境定義物件,則會在稍後重新發出陳述式。
如果 SQL 陳述式已嘗試存取 WLM 物件,則會在稍後重新發出陳述式。
聯合系統使用者:如果先前的動作不能解決問題,請找出要求,並判斷資料來源上有哪些其他限制防止物件的存取。確定應用程式並未違反那些限制的任一個。
sqlcode:-910
sqlstate:57007
SQL0911N 現行交易已因死鎖或逾時而 Rollback。原因碼 reason-code。
解說
現行工作單元陷入無法解決的物件競用,因此必須 Rollback。
原因碼如下:
- 2
交易因死鎖而 roll back。
- 68
交易因鎖定逾時而 roll back。
- 72
交易因交易期間發生 DB2 Data Links Manager 錯誤而 roll back。
- 73
交易已 roll back,因為佇列作業臨界值(例如 CONCURRENTDBCOORDACTIVITIES 臨界值)導致兩個以上活動達到死鎖狀態。
- 74
與原因碼 73 類似,交易已 Roll Back,因為兩個以上的活動達到死鎖狀態。
- 75
已回復交易,因為兩個以上應用程式已死鎖,等待工作量管理程式許可控制及鎖定所控管的資源組合。
- 76
已回復交易,因為兩個以上應用程式已死鎖,等待工作量管理程式許可控制所控管的資源。
應用程式已 roll back 至前一個 COMMIT。
使用者回應
必須再度輸入與工作單元相關的變更。
為了幫助避免死鎖或鎖定逾時,可能時,請為長時間執行的應用程式或為可能發生死鎖的應用程式,發出經常的 COMMIT 作業。
聯合系統使用者:在聯合伺服器或資料來源中可能會發生死鎖。沒有任何機制可用來偵測橫跨資料來源及聯合系統(有可能)的死鎖。要找出使要求失敗的資料來源是可能的(請參閱問題與解決方案手冊,判斷哪一個資料來源無法處理 SQL 陳述式)。
當處理某些 SQL 陳述式組合時,發生死鎖情形是正常的或是在預料中。 建議您最好在設計應用程式時,應儘可能避免死鎖。
如果因為佇列作業臨界值(例如,CONCURRENTDBCOORDACTIVITIES 臨界值)而達到死鎖狀態,請增加佇列作業臨界值的值。
如果因為應用程式等待工作量管理程式許可控制所控管的資源而達到死鎖狀態,請對執行應用程式的最後一個陳述式的服務類別增加資源共用。若要協助避免死鎖涉及工作量管理程式許可控制所控管的資源,請關閉不再需要的 SQL 游標,減少應用程式中同時執行之 SQL 陳述式的數目。
sqlcode:-911
sqlstate:40001
SQL0912N 已經達到資料庫的最大鎖定要求數。原因碼 = reason-code
解說
已經達到資料庫的鎖定數上限,因為鎖定要求的記憶體不足。
原因碼會指出已達到的記憶體限制類型:
- 1
本端鎖定管理程式記憶體,可使用 LOCKLIST 資料庫配置參數來配置它。
- 2
廣域鎖定管理程式記憶體,可使用 CF_LOCK_SZ 資料庫配置參數來配置它。
無法處理該陳述式。
使用者回應
在提交其他 SQL 陳述式前,應用程式應先提交 COMMIT 或 ROLLBACK 陳述式。 請考慮依原因碼所指示來增加資料庫配置參數的值,以支援更多鎖定要求。
- 1
增加 LOCKLIST 資料庫配置參數,此參數會管理針對本端鎖定管理程式所配置的鎖定記憶體。
- 2
增加 CF_LOCK_SZ 資料庫配置參數,此參數會管理針對廣域鎖定管理程式所配置的鎖定記憶體。
sqlcode:-912
sqlstate:57011
SQL0913N 死鎖或逾時造成分散式交易執行不成功。原因碼 reason-code。
解說
分散式交易所發出的要求陷入未解決的物件爭用,因此執行失效。
原因碼如下:
- 2
交易分支因死鎖而失效。
- 68
交易分支因鎖定逾時而失效。
- 72
交易 ROLLBACK,因與該交易相關的 DB2 Data Links Manager 發生錯誤。
- 80
逾時導致陳述式失效。
根據資料庫伺服器或用戶端的版本及平台而定,此訊息的文字及執行時期記號可能會有所不同。
使用者回應
- 根據原因碼 80,您可以不終止應用程式,直接重試失效的陳述式。 如果應用程式存取多重遠端資料庫, 最好能 Rollback 交易,以避免廣域死鎖。
- 若是其他原因碼,則發出要求來 Rollback 交易。由於現行交易分支失效而不能確定交易。
- 為了幫助避免死鎖或鎖定逾時,可能時,請在長時間執行的應用程式或需要高度並行存取資料的應用程式內,發出經常的 COMMIT 操作。
sqlcode:-913
sqlstate:57033
SQL0917N 無法連結套件。
解說
因發生錯誤,無法建立套件。
可能在處理連結或確定期間,發出這個 SQLCODE。 如果是在處理確定期間發出的,將 Roll Back 資料庫的所有變更。 如果是在處理連結期間發出的,僅無法建立套件,但仍然能夠確定邏輯工作單元內的其他變更。
使用者回應
通常因為錯誤而未連結一個以上的 SQL 陳述式,引起這個問題。
判定哪些陳述式導致錯誤並更正它們。 重新發出指令來建立套件。
sqlcode:-917
sqlstate:42969
SQL0918N 應用程式必須執行 Rollback。
解說
已在資料庫中 Rollback 工作單元,但此工作單元中的其他資源管理程式可能未 Rollback。 為了確定應用程式的完整性,在應用程式發出 Rollback 之前,將會拒絕所有 SQL 要求。
使用者回應
應用程式發出 Rollback 之前,將會拒絕所有 SQL 要求。例如,在 CICS 環境中,這將是 CICS SYNCPOINT ROLLBACK 指令。
sqlcode:-918
sqlstate:51021
SQL0920N 不能從其他資料庫用戶端系統存取一資料庫用戶端系統的資料。
解說
工作站已配置為用戶端或具有本端用戶端的伺服器。在此系統上建立的任何資料庫不能由其他工作站共用。
無法處理此函數。
使用者回應
僅從伺服器工作站要求資料。
sqlcode:-920
sqlstate:57019
SQL0925N SQL COMMIT 對應用程式執行環境無效。
解說
- 在諸如 CICS 的「分散式交易處理」環境裡,嘗試執行靜態 SQL COMMIT 陳述式, 但是需要環境特定的確認陳述式。 例如,在 CICS 環境中,這將是 CICS SYNCPOINT 指令。
- 前置編譯或設為在「非 TP 監視器」環境中使用 CONNECT 2 的 DB2 應用程式,發出動態的 SQL COMMIT 陳述式,但是只允許靜態的 SQL COMMIT。
- 從儲存程序發出 SQL COMMIT 時,若呼叫程式正在分散式工作單元或「分散式交易處理」環境中執行,同樣不能允許 SQL COMMIT。
使用者回應
- 移除發出 COMMIT 的陳述式,並用可執行對環境有效的同等動作的陳述式置換它。
- 如為「非 TP 監視器」環境中的連接類型 2 ,請您只使用靜態的 COMMIT。
- 如為儲存程序,請移除 COMMIT。
sqlcode:-925
sqlstate:2D521
SQL0926N SQL ROLLBACK 對應用程式執行環境無效。
解說
- 在諸如 CICS 的「分散式交易處理」環境裡,嘗試執行靜態 SQL ROLLBACK 陳述式, 但是需要環境特定的 Rollback 陳述式。 例如,在 CICS 環境中,這將是 CICS SYNCPOINT ROLLBACK 指令。
- 前置編譯或設為使用 CONNECT 2 的 DB2 應用程式,發出動態的 SQL ROLLBACK 陳述式,但是只允許靜態的 SQL ROLLBACK。
- 從儲存程序發出 SQL ROLLBACK 時,若呼叫程式正在分散式工作單元(CONNECT 類型 2)或「分散式交易處理」環境中執行,SQL ROLLBACK 同樣受到限制。
使用者回應
- 移除發出 ROLLBACK 的陳述式,並用可執行對環境有效的同等動作的陳述式置換它。
- 如為連接類型 2,請您只使用靜態的 COMMIT。
- 如為儲存程序,請將它完全移除。
sqlcode:-926
sqlstate:2D521
SQL0930N 沒有足夠的記憶體可供處理陳述式。
解說
對資料庫提出了要求,資料庫需要另一記憶體頁面,但是已無更多頁面可供資料庫管理程式使用。
無法處理該陳述式。
使用者回應
可能的解決方案包括:
- 請確定您的系統中有足夠的實際和虛擬記憶體。
- 移除背景處理。
- 如果在 DUOW 重新同步期間發生錯誤,請減少 RESYNC_INTERVAL 資料庫管理程式配置參數值。
- 若錯誤發生在參照常式(UDF、儲存程序或方法)的陳述式上,則要包含引數和回覆值所需的儲存體, 可能會比系統上可用的記憶體還要大。 以 BLOB、CLOB、DBCLOB 等參數或回覆值來定義常式(可能高達 2GB)時,就有可能發生這種情況。
如果這些解決方案無法解決此問題,您必須考慮變更常式的定義。
sqlcode:-930
sqlstate:5UA0L、57011
SQL0931C 發生作業系統檔案表格溢位。無法處理後續的 SQL 陳述式。
解說
已達到作業系統的限制。不允許應用程式再發出其他的 SQL 陳述式。 資料庫被標記為需要回復,因此,所有使用資料庫的應用程式都無法存取資料庫。
使用者回應
請終止所有使用資料庫的應用程式。 請重新啟動資料庫。
- 將 MAXFILOP 資料庫配置參數變更為 較小值(如此可減少 DB2 使用的 作業系統檔案表格),及/或
- 請視需要終止其他也在使用檔案的應用程式,及/或
- 參照增加 作業系統檔案表格限制的作業系統文件。 在大多數 UNIX 環境中, 可使用較大值更新核心配置來完成此事。(在 AIX 上,只 可能藉由增加機器的記憶體數量來完成此事)。
sqlcode:-931
sqlstate:58005
SQL0949N UTL_FILE 模組常式嘗試無效的作業系統作業。作業系統錯誤 = error-text。
解說
UTL_FILE 模組常式嘗試的作業導致作業系統傳回錯誤,如 error-text 中所述。
使用者回應
請參閱作業系統錯誤訊息資訊,以判斷如何更正 error-text 報告的問題。
sqlcode:-949
sqlstate:58024
SQL0950N 不能捨棄表格或索引,因為目前正在使用它。
解說
當一開啟的游標正在使用表格或索引時,不能發出 DROP TABLE 或 DROP INDEX 陳述式。
無法處理該陳述式。未捨棄表格或索引。
使用者回應
關閉任何需要的游標並重新提交陳述式。
sqlcode:-950
sqlstate:55006
SQL0951N 無法變更類型為 object-type 的物件 object-name,因為同一個應用程式處理目前正在使用它。
解說
當物件的 ALTER 陳述式、SET INTEGRITY 陳述式或 TRUNCATE 陳述式已鎖定或正在使用中時,無法發出這個陳述式。
無法處理該陳述式。未變更物件。
使用者回應
請關閉直接或間接依賴物件 object-name 的所有游標,然後重新提交陳述式。
sqlcode:-951
sqlstate:55007
SQL0952N 由於岔斷,處理已被取消。
解說
使用者可能按了岔斷鍵序列。
陳述式處理已終止。在終止發生之前,有些變更已引進資料庫中,但尚未確定。
如果 Call Level Interface (CLI) 由於查詢逾時而發出岔斷,您也可能收到此錯誤。例如:如果應用程式使用 SQLSetStmtAttr() 函數將 SQL_ATTR_QUERY_TIMEOUT 陳述式屬性配置為非零值,則如果 SQL 陳述式或 XQuery 表示式沒有在指定的時間量內完成,CLI 會發出岔斷以取消執行,並且回到應用程式。
聯合系統使用者:資料來源也可以偵測到這種狀況。
使用者回應
繼續執行應用程式。
如果正在安裝範例資料庫,請將其捨棄,並重新安裝範例資料庫。
如果您要阻止 CLI 在查詢逾時時發出岔斷,可以透過在 db2cli.ini 檔案中設定 QUERYTIMEOUTINTERVAL=0,停用查詢逾時行為。停用查詢逾時行為會讓查詢執行到完成為止,除非伺服器上設有死鎖或鎖定等待逾時值。
sqlcode:-952
sqlstate:57014
SQL0954C 應用程式資料堆中沒有足夠的儲存體可用於處理陳述式。
解說
所有可供應用程式使用的記憶體都已使用。
無法處理該陳述式。
使用者回應
收到此訊息時,請終止應用程式。如果 applheapsz 資料庫配置參數設為 AUTOMATIC,將需要增加 APPL_MEMORY 資料庫配置設定,或 INSTANCE_MEMORY 資料庫管理程式配置設定。否則,增加 applheapsz 資料庫配置參數,以容許更大的應用程式資料堆。
db2 UPDATE DB CFG FOR sample USING APPLHEAPSZ 4000如果將所有相關的配置參數皆設為 AUTOMATIC 或 COMPUTED,則實例的記憶體需求會超出配置在機器上的記憶體數量。 可能的解決方案包括減少資料庫工作量、啟用連線集中器功能或新增附加的記憶體至機器上。
sqlcode:-954
sqlstate:57011
SQL0955C 無法配置排序記憶體來處理陳述式。原因碼 = reason-code。
解說
沒有足夠的虛擬記憶體供資料庫代理程式來作排序處理, 如原因碼所示:
- 1
專用處理記憶體不足。
- 2
在整個資料庫共用記憶體區域中指定來作排序處理的共用記憶體不足。
- 3
針對直欄組織表格上的查詢,共用記憶體不足。
無法處理陳述式,但是可能已處理其他 SQL 陳述式。
使用者回應
針對每一個原因碼執行相對應的動作,以回應此訊息:
- 1
增加實例或系統層次可用的記憶體資源。或者,減少配置的記憶體需求。例如,減少 SORTHEAP 資料庫配置參數的值。
- 2
增加資料庫、實例或系統層次可用的記憶體資源。或者,減少配置的記憶體需求。例如,減少 SORTHEAP 資料庫配置參數的值。
- 3
增加 SORTHEAP 資料庫配置參數的值。您可能需要增加較高層次資料庫配置參數(例如 SHEAPTHRES_SHR)的設定。
sqlcode:-955
sqlstate:57011
SQL0956C 資料庫資料堆中沒有足夠的儲存體可供用於處理陳述式。
解說
所有可供資料庫使用的記憶體都已使用。
無法處理該陳述式。
使用者回應
收到此訊息時,請終止應用程式。
增加 dbheap 資料庫配置參數,以容許更大量的資料庫資料堆。如果 I/O 伺服器的數目接近上限, 則減少此數目可能也會有所幫助。
如果 dbheap 資料庫配置參數設為 AUTOMATIC,將需要增加 DATABASE_MEMORY 資料庫配置設定,或 INSTANCE_MEMORY 資料庫管理程式配置設定。
更新配置參數時,建議一次以現行大小的 10% 變更它們,直到解決了錯誤狀況為止。若要變更 dbheap,請輸入與下列類似的指令,將資料庫 sample 的 dbheap 設為大小 2400:
db2 UPDATE DB CFG FOR sample
USING DBHEAP 2400
若要在與資料庫斷線時變更 dbheap,請輸入與下列類似的指令
db2 CONNECT RESET;
db2 UPDATE DB CFG FOR sample
USING DBHEAP 2400
如果將所有相關的配置參數皆設為 AUTOMATIC 或 COMPUTED,則實例的記憶體需求會超出配置在機器上的記憶體數量。 可能的解決方案包括減少資料庫工作量、啟用連線集中器功能或新增附加的記憶體至機器上。
sqlcode:-956
sqlstate:57011
SQL0958C 已經達到開啟檔的最大數目。
解說
已達到可供資料庫使用的最大檔案處理程式數。
無法處理該陳述式。
使用者回應
增加任何影響資料庫位置上允許的最大開啟檔案數的參數。 這包括增加配置參數 (maxfilop),以容許為實例提供更多的檔案控點,並終止其他階段作業以減少使用的檔案控點數。
sqlcode:-958
sqlstate:57009
SQL0959C 伺服器的通訊資料堆中沒有足夠的儲存體可供用於處理陳述式。
解說
伺服器通訊資料堆中所有可用的記憶體都已使用。
無法處理指令或陳述式。
使用者回應
收到此訊息時,請終止應用程式。增加伺服器工作站資料庫管理程式配置檔中的通訊資料堆 (comheapsz) 參數的大小。
附註:這則訊息只適用於第 2 版之前的 DB2 版次。
sqlcode:-959
sqlstate:57011
SQL0960C 已在具有下列名稱或 ID table-space-list 的表格空間中建立物件數上限。
解說
您無法在表格空間中建立新的物件,因為已達到表格空間的物件數上限。
使用者回應
指定不同的表格空間,然後在其中建立物件或表格。 如果表格空間是 SYSTEM TEMPORARY 表格空間,則有太多的並行暫存表格正在使用中。
sqlcode:-960
sqlstate:57011
SQL0964C 資料庫的交易日誌已滿。
解說
交易日誌中的所有空間都已使用。
使用的若是含有輔助日誌檔案的環式日誌,表示已嘗試配置和使用它們。檔案系統沒有任何其餘的空間時,不能使用輔助日誌。
使用的若是保存日誌,表示檔案系統未提供空間來包含新的日誌檔。
當資料庫幾乎使用完所有可能的日誌序號時,也會傳回此訊息。資料庫管理程式會使用唯一 ID(稱為日誌序號 (LSN)) 來識別資料庫日誌記錄。 當交易導致寫入資料庫日誌時,資料庫會使用新的 LSN 值。
應用程式無法執行任何導致資料庫寫入日誌記錄的交易。
無法處理該陳述式。
使用者回應
收到此訊息 (SQLCODE) 時,執行 COMMIT 或 ROLLBACK,或者重試此操作。
如有並行的應用程式在更新資料庫,則請重試此操作。 當另一應用程式完成交易時,可能會釋放日誌空間。
發出更頻繁的確認操作。如果您的交易尚未確認,那麼,當交易確認後,可能會釋放日誌空間。設計應用程式時,考慮何時確認更新交易,以防止日誌已滿的情況。
如果發生死鎖,則請更經常地檢查他們。 藉由減少資料庫配置參數 DLCHKTIME,可達成此事。如此可以更快偵測和解決死鎖(藉由 ROLLBACK),繼而釋放日誌空間。
如果經常發生此種情況,請增加資料庫配置參數,以允許較大的日誌檔。較大日誌檔需要更多空間,但是減少應用程式重試操作的需要。可能需要調整的交易配置參數有 LOGFILSIZ、LOGPRIMARY、LOGSECOND。
如果正在安裝範例資料庫,請將其捨棄,並重新安裝範例資料庫。
如果因為資料庫幾乎使用完所有可能的 LSN 值而傳回此訊息,則可以執行下列動作,將 LSN 值重設為零:
- 卸載資料庫中的所有資料
- 捨棄並重建資料庫
- 載入所有資料
sqlcode:-964
sqlstate:57011
SQL0965W 在此工作站的訊息檔案中,沒有與 SQL 警告 SQLCODE 相對應的訊息文字。模組 name 傳回原始記號為 token-list 的警告。
解說
資料庫伺服器已傳回 SQLCODE 字碼到您的應用程式。 警告碼未對應到此工作站上的 DB2 訊息檔案中的訊息。
使用者回應
如需所指定 SQLCODE 的相關資訊,請參閱您的資料庫伺服器文件。
SQL0966N 找不到或不能開啟「資料庫連線服務」目錄中指定的錯誤對映檔 name。
解說
- 錯誤對映檔不存在。
- 錯誤對映檔目前由另一應用程式開啟。
- 錯誤對映檔不在預期的路徑中。
- 錯誤對映檔案損壞。
無法取回錯誤對映資料。
使用者回應
從開啟檔案的應用程式釋放檔案,或重新安裝或回回復始檔案。
sqlcode:-966
sqlstate:57013
SQL0967N 「資料庫連線服務」目錄中指定的錯誤對映檔 name 的格式無效。
解說
程式讀取錯誤對映檔時發生錯誤。
無法取回錯誤對映資料。
使用者回應
更正錯誤對映檔中所有語法錯誤。
sqlcode:-967
sqlstate:55031
SQL0968C 檔案系統已滿。
解說
包含資料庫的其中一個檔案系統已滿。 此檔案系統可能包含資料庫目錄、資料庫日誌檔或表格空間儲存器。
在 DB2 pureScale 環境中,如果您是將成員新增至資料庫管理程式實例,則磁碟空間不足以建立其他成員檔案。
無法處理該陳述式。
使用者回應
清除不需要的檔案,釋放系統空間。請勿清除資料庫檔案。如果需要額外空間,或許需要終止被識別為不必要的表格和索引。
在 UNIX 型系統上,此磁碟已滿的狀況可能是由於超過目前使用者 ID 所能使用的檔案大小上限。請以 chuser 指令更新 fsize。而您可能亦須重新啟動系統。
當儲存器的大小有差異時,可能會導致磁碟已滿的情況。 如果檔案系統中有足夠的空間,則將表格空間捨棄, 再以相同大小的儲存器重建表格空間。
如果無法處理的陳述式參照了 LOB 資料類型:
- 確定應用程式中使用的任何游標在使用後立即關閉。
- 確定已在應用程式內定期執行 COMMIT 陳述式。
- 新增其他儲存器至系統暫存表格空間,以在這個陳述式執行期間保留暫時 LOB 資料。
在 DB2 pureScale 環境中,消除不想要的檔案或新增檔案系統的容量來釋出系統空間,然後重新執行指令。
sqlcode:-968
sqlstate:57011
SQL0969N 在此工作站的訊息檔案中,沒有對應 SQL 錯誤 error 的訊息文字。模組 name 傳回原始記號為 token-list 的錯誤。
解說
資料庫伺服器向應用程式傳回 SQLCODE error。 錯誤碼不對應此工作站的 DB2 訊息檔中的訊息。
使用者回應
如需所指定 SQLCODE 的相關資訊,請參閱您的資料庫伺服器文件。然後,根據文件中有關資料庫伺服器的指示採取適當的動作,修正這個問題。
聯合系統使用者:請從使要求失敗的資料來源中找出問題。在資料來源的可用手冊中尋找 error。 如果問題與資料有關,請檢查當錯誤發生時,正在資料來源上處理的資料。
SQL0970N 系統嘗試寫入唯讀檔案。
解說
資料庫使用的檔案被標記為唯讀或不存在。 資料庫需有對這個檔案的寫入權。
無法處理該陳述式。
使用者回應
收到此訊息 (SQLCODE) 時,請終止應用程式。 確定所有資料庫檔案都同時允許讀取和寫入存取。請在指定的檔名內檢查是否有不必要的空格。
sqlcode:-970
sqlstate:55009
SQL0972N 資料庫磁碟機未包含正確的磁片。
解說
磁碟機中的磁片不是資料庫磁片。
無法處理該陳述式。
使用者回應
請將需要的磁片放入磁碟機 。如果應用程式使用常駐在磁片中的資料庫起始,請勿取出該磁片。
sqlcode:-972
sqlstate:57019
SQL0973N heap-name 資料堆或堆疊中沒有足夠的儲存體可用來處理陳述式。
解說
此堆所有可用的記憶體都已使用。
無法處理該陳述式。
使用者回應
收到此訊息 (SQLCODE) 時,請終止應用程式。 修改 heap-name 配置參數,以增加資料堆或堆疊大小。
如果 heap-name 配置參數設為 AUTOMATIC,將需要增加 APPL_MEMORY 資料庫配置設定、DATABASE_MEMORY 資料庫配置設定,或 INSTANCE_MEMORY 資料庫管理程式配置設定。否則,修改 heap-name 配置參數值,以增加資料堆大小。
套件快取及型錄快取具有軟性限制。對於這些限制,您將需要增加 DATABASE_MEMORY 資料庫配置設定或 INSTANCE_MEMORY 資料庫管理程式配置設定。
修改 DATABASE_MEMORY 資料庫配置參數時,將參數設為 AUTOMATIC 將告知資料庫管理程式,自動管理資料庫記憶體。
若為應用程式共用資料堆大小,將需要增加 APPL_MEMORY 資料庫配置設定,或 INSTANCE_MEMORY 資料庫管理程式配置設定。
更新配置參數時,建議一次以現行大小的 10% 變更它們,直到解決了錯誤狀況為止。
比方說,如果 heap-name 是 UTIL_HEAP_SZ,且資料庫名稱是 TORDB1,若要將這個資料庫配置參數更新為 10000,請發出下列指令:
db2 update db cfg
for TORDB1
using UTIL_HEAP_SZ 10000
若要檢視資料庫配置參數的清單,請使用 GET DATABASE CONFIGURATION 指令。
若要將資料庫管理程式配置參數 MON_HEAP_SZ 更新為新的大小 100,請發出下列指令:
db2 update dbm cfg
using MON_HEAP_SZ 100
若要檢視資料庫管理程式配置參數的清單,請使用 GET DATABASE MANAGER CONFIGURATION 指令。
如果將所有相關的配置參數皆設為 AUTOMATIC 或 COMPUTED,則實例的記憶體需求會超出配置在機器上的記憶體數量。 可能的解決方案包括減少資料庫工作量、啟用連線集中器功能或新增附加的記憶體至機器上。
sqlcode:-973
sqlstate:57011
SQL0974N 含有資料庫的磁碟機已被鎖定。
解說
系統報告,包含資料庫的磁碟機已被鎖定。
無法處理該陳述式。
使用者回應
確定系統上沒有其他任何可以鎖定磁碟機的處理(例如,CHKDSK)。重試作業。
如果正在安裝範例資料庫,請將其捨棄,並重新安裝範例資料庫。
sqlcode:-974
sqlstate:57020
SQL0975N 無法啟動新交易,因為資料庫或實例 username 已被使用者 name 靜止。 靜止類型:type。
解說
另一使用者已使您嘗試使用的實例或資料庫靜止,要等到實例或資料庫不再處於靜止狀態時,才能允許任何新交易。
靜止類型 type 係指已經靜止的實例或資料庫,'1' 代表實例,'2' 代表資料庫。
使用者回應
聯絡目前使實例或資料庫靜止的使用者,以決定實例或資料庫何時不再靜止,要在什麼時候再重試要求。
sqlcode:-975
sqlstate:57046
SQL0976N 指定的 I/O 裝置未備妥。
解說
I/O 裝置或媒體未備妥,無法接受 I/O 指令。
無法處理該陳述式。
使用者回應:
請確保 I/O 裝置或媒體已備妥,並重試作業。
使用者回應
sqlcode:-976
sqlstate:57021
SQL0977N COMMIT 狀態不明。
解說
tm_database 在 COMMIT 處理程序期間變成不可使用,並造成 COMMIT 的結果不明。當 tm_database 變成可用時,會發生資料庫重新同步。請注意,重新同步期間可能會 Rollback 交易。可以安全地進一步執行 SQL 陳述式,然而,鎖定可能會保持到重新同步程序完成為止。
使用者回應
請驗證可與 tm_database 連接,例如,藉由使用 CLP。 若是不能連接,則請遵循對傳回的 SQLCODE 所必要的動作,以確定可以建立連接。
sqlcode:-977
sqlstate:40003
SQL0978N 儲存媒體是防止寫入的。
解說
嘗試對資料庫進行寫入操作,但資料庫儲存媒體是防止寫入的。
無法處理該陳述式。
使用者回應
請驗證您使用的是正確的儲存媒體。必要時,請移除儲存媒體的寫入保護。
sqlcode:-978
sqlstate:55009
SQL0979N 在 num 資料庫中,對於以 SYNCPOINT of NONE 執行的應用程式處理而言,COMMIT 已失效。 失敗包括下列資料庫別名及 SQLSTATE 配對(最多可傳回四個):alias/SQLSTATE1、 alias/SQLSTATE2、alias/SQLSTATE3、alias/SQLSTATE4。
解說
已使一個應用程式與多個資料庫連接,且發出一個 COMMIT, 這個 COMMIT 對這些連接中的一個或多個而言是失效的。
聯合系統使用者: 如果其中一個失效的連線是一個使用暱稱的聯合伺服器資料庫, 則無法對暱稱所需的其中一個資料來源進行確定。
使用者回應
視應用程式與更新中的資料的性質而定,使用者或許希望中斷正在執行的處理、 記載失效並發出適當的 SQL,以確定應用程式預定的更新, 前後一致地反映到所有涉及的資料庫。
如果不能傳回 COMMIT 錯誤影響所及的資料庫的完整清單,請參閱偵錯日誌以取得完整的列示。
sqlcode:-979
sqlstate:40003
SQL0980C 發生磁碟錯誤。無法處理後續的 SQL 陳述式。
解說
發生磁碟錯誤,使現行及後續的 SQL 陳述式無法成功地執行。不允許應用程式再發出其他的 SQL 陳述式。 例如,與應用程式關聯的回復常式,不能再發出其他的 SQL 陳述式。資料庫被標記為需要回復,因此,所有使用資料庫的應用程式都無法存取資料庫。
無法處理該陳述式。
使用者回應
如果可能,請記錄來自 SQLCA 的所有錯誤資訊。終止使用資料庫的所有應用程式。判定錯誤是否為硬體錯誤。 請重新啟動資料庫。如果不可能回復,請從備份副本回復資料庫。
如果正在安裝範例資料庫,請將其捨棄,並重新安裝範例資料庫。
sqlcode:-980
sqlstate:58005
SQL0982N 發生磁碟錯誤。但是可以處理後續的 SQL 陳述式。
解說
處理暫時系統檔案期間,發生磁碟錯誤,使現行 SQL 陳述式無法成功地執行。但是可以處理後續的 SQL 陳述式。
無法處理該陳述式。
使用者回應
收到此訊息 (SQLCODE) 時,請終止應用程式。
sqlcode:-982
sqlstate:58004
SQL0983N 交易日誌不屬於現行資料庫。
解說
日誌檔中儲存的標記,與資料庫的相依標記不相符。此種錯誤通常發生於使用者指定儲存日誌檔的目錄與儲存資料庫的目錄不同時。可能涉及檔案重新導向。
無法處理該陳述式。
使用者回應
正確存取日誌檔,重新提交指令。
sqlcode:-983
sqlstate:57036
SQL0984C COMMIT 或 ROLLBACK 不成功。無法處理後續的 SQL 陳述式。
解說
因為系統錯誤,所以無法成功地處理確定或 Rollback 作業。 不允許應用程式再發出其他的 SQL 陳述式。 例如,與應用程式關聯的回復常式,不能再發出其他的 SQL 陳述式。資料庫被標記為需要回復,因此,所有使用資料庫的應用程式都無法存取資料庫。
無法處理該陳述式。
使用者回應
若有可能,請記錄訊息號碼 (SQLCODE) 及所有的 SQLCA 錯誤資訊。 終止使用資料庫的所有應用程式。請重新啟動資料庫。如果正在安裝範例資料庫,請將其捨棄,並重新安裝範例資料庫。
如果不可能回復,請從備份副本回復資料庫。
若追蹤處於作用中,則在作業系統指令行提示處呼叫「獨立追蹤機能」。請聯絡技術服務代表,並提供下列資訊:
必要資訊:
- 問題說明
- SQLCODE
- SQLCA 內容(可能的話)
- 追蹤檔案(可能的話)。
聯合系統使用者:請從使要求失敗的資料來源中找出問題,並對該資料來源採取必要的診斷步驟及資料庫回復程序。資料來源的疑難排解程序及資料庫回復程序常有變動,所以請參閱合適的資料來源手冊。
sqlcode:-984
sqlstate:58005
SQL0985C 處理資料庫目錄時,發生檔案錯誤。無法使用資料庫。
解說
系統不能從目錄檔案上的 I/O 錯誤回復。
系統無法處理任何使用此資料庫的陳述式。
使用者回應
請從備份副本回復資料庫。
如果正在安裝範例資料庫,請將其捨棄,並重新安裝範例資料庫。
sqlcode:-985
sqlstate:58005
SQL0986N 處理使用者表格時,發生檔案錯誤。無法使用表格。
解說
表格中的資料不再有效。
系統無法處理任何使用此表格的陳述式。
使用者回應
如果資料庫不一致,請從備份版次回復資料庫。
如果正在安裝範例資料庫,請將其捨棄,並重新安裝範例資料庫。
sqlcode:-986
sqlstate:58004
SQL0987C 無法配置應用程式控制共用記憶體集合。
解說
- 系統中配置的共用記憶體 ID 數目。
- 系統中可供使用的換頁或交換空間數量。
- 系統中可供使用的實體記憶體數量。
使用者回應
- 請確定有充份可用的記憶體資源,可符合資料庫管理程式的需求及在系統上執行的其他程式的需求。
- 減少影響此記憶體集合的資料庫配置參數 app_ctl_heap_sz,以減少資料庫管理程式對它的記憶體需求。
- 請減少下列一個或多個資料庫配置參數:dbheap、util_heap_sz 及 buffpage。如需影響所配置的資料庫通用記憶體數量的參數,請參閱 Administration Guide。
- 如果 intra_parallel 被設為 yes,請減少資料庫管理程式配置參數 sheapthres,或將 intra_parallel 設為 no。
- 請視需要停止其他使用系統的應用程式。
sqlcode:-987
sqlstate:57011
SQL0989N AFTER 觸發程式 trigger-name 已嘗試在表格 table-name 中修改 SQL 資料變更陳述式已在 FROM 子句內修改的橫列。
解說
已在 FROM 子句中指定了 SQL 資料變更陳述式,但是 SQL 資料變更陳述式的基礎目標基本表格具有一個修改相同表格的已定義 AFTER 觸發程式。 這是不允許的。
無法處理該陳述式。
使用者回應
避免在 FROM 子句內使用 SQL 資料變更陳述式,或變更觸發程式,以便它不會修改作為 SQL 資料變更陳述式之目標的表格。
sqlcode:-989
sqlstate:560C3
SQL0990C 發生索引錯誤。請重組表格。
解說
有一個索引具有相當多的活動,因此用光可供索引使用的所有可用空間。
聯合系統使用者:資料來源也可以偵測到這種狀況。
無法處理該陳述式。
使用者回應
請執行您的工作,然後重試指令。如果錯誤繼續發生,請 Rollback 您的工作。如果錯誤依然持續,可能的話,請重組表格。
聯合系統使用者:請從使要求失敗的資料來源中找出問題,並遵循該資料來源的索引重建程序。
SQL0992C 前置編譯程式的版本號碼無效。
解說
前置編譯的程式(套件)的版次號碼,與所安裝的資料庫管理程式版本的版次號碼不相容。
前置編譯的程式(套件)不能與現行的資料庫管理程式版本一同使用。 無法處理該指令。
使用者回應
請您只使用以相容的資料庫管理程式版次層次前置編譯的程式。
sqlcode:-992
sqlstate:51008
SQL0993W 資料庫配置檔中的日誌新路徑 (newlogpath) 是無效的。
解說
- 路徑不存在。
- 指定的路徑中雖然找到有正確名稱的檔案,但它不是此資料庫的日誌檔。
- 資料庫管理程式實例 id 沒有存取路徑或日誌檔的許可。
沒有作您要求的變更。
使用者回應
若要變更至日誌檔的路徑,請提交包含有效值的資料庫配置指令。
sqlcode:+993
sqlstate:01562
SQL0994N 應用程式儲存點的用法無效。
解說
- 要求多個作用中的儲存點。
- 沒有作用中的儲存點,卻發出結束儲存點呼叫。
- 沒有作用中的儲存點,卻發出 Rollback 儲存點呼叫。
無法處理此函數。
使用者回應
請更正程式中的儲存點使用法。
SQL0995W 進入日誌檔的現行路徑 (logpath) 是無效的。 日誌檔路徑已重設為預設值。
解說
- 路徑不存在。
- 指定的路徑中雖然找到有正確名稱的檔案,但它不是此資料庫的日誌檔。
- 資料庫管理程式實例 id 沒有存取路徑或日誌檔的許可。
如為環式記載,是在預設日誌路徑中建立日誌檔。如為儲存器記載,是在預設日誌路徑中建立下一個日誌檔。沒有作您要求的變更。
使用者回應
若要變更至日誌檔的路徑,請提交包含有效值的配置指令。
sqlcode:+995
sqlstate:01563
SQL0996N 無法釋放表格空間裡的頁給物件。
解說
表格空間裡有損壞的內部資料庫頁或內部邏輯錯誤。
使用者回應
請中斷物件或表格空間的使用。 聯絡 IBM 服務人員檢查物件和表格空間。
sqlcode:-996
sqlstate:58035
SQL0997W 交易處理的一般資訊性訊息。原因碼 = XA-reason-code。
解說
- XA_RDONLY (3) - 交易分支是唯讀的並且已經確認。
- 64 - TM 資料庫指示在 DUOW 重新同步時確定交易
- 65 - TM 資料庫指示在 DUOW 重新同步時 Rollback 交易
使用者回應
不需要任何動作。
SQL0998N 交易或依經驗判斷的處理程序期間發生了錯誤。原因碼 = reason-code。 子碼 = subcode。
解說
當處理分散式交易時,偵測到一個錯誤。交易為:
- 正在「分散式交易處理」環境(如那些來自 CICS 或其他交易管理程式者)下執行。
- 執行依經驗判斷的作業。
- 在聯合資料庫內更新多個暱稱,在這個資料庫中, 每一個更新的暱稱代表不同的資料來源。 在這個情況中,於交易處理程序期間,其中一個資料來源已失效。 在這種情況中,所傳回的原因碼為在資料來源,而不是聯合資料庫中失效的原因。
可能的原因碼(對應的 X/Open XA 原因碼顯示在括弧中)為:
- 01 - (XAER_ASYNC) 非同步操作未執行。
- 02 - (XAER_RMERR) 交易分支中發生資源管理程式錯誤。
- 03 - (XAER_NOTA) XID 無效。
- 04 - (XAER_INVAL) 提供了無效的引數。可能的子代碼如下:
- 01 - xa_info 指標無效,例如,XAOpen 字串為空值。
- 02 - 資料庫名稱超過最大長度。
- 03 - 使用者名稱超過最大長度。
- 04 - 密碼超過最大長度。
- 05 - 已指定使用者名稱,但沒有指定密碼。
- 06 - 已指定密碼,但沒有指定使用者名稱。
- 07 - xa_info 字串中有太多參數。
- 08 - 多個 xa_opens 對同一個資料庫名稱產生不同的 RM id。
- 09 - 未指定資料庫名稱。
- 10 - 無效的 exe_type。
- 11 - xa_config 檔案中無 Sybase LRM 名稱,或 xa_config 檔案不存在。
- 05 - 已在不適當的環境定義中,呼叫了 (XAER_PROTO) 常式。
- 06 - (XAER_RMFAIL) 無資源管理程式可用。
- 07 - (XAER_DUPID) XID 已經存在。
- 08 - (XAER_OUTSIDE) RM 執行廣域交易外的工作。
- 09 - 用交易管理程式登記 (ax_reg) 已失效。可能的子代碼如下:
- 01 - 找不到結合的 XID。
- 02 - 無法載入 tp_mon_name 配置參數中指定的動態檔案庫。
- 10 - 於暫停時嘗試起始一不同的交易。
- 12 - 用交易管理程式註銷登記 (ax_unreg) 已失效。
- 13 - ax 介面失效:找不到 ax_reg() 和 ax_unreg()。
- 14 - 使用 Microsoft Distributed Transaction Coordinator 列入失敗。MSDTC 伺服器可能已關閉。請終止現行交易。
- 15 - 交易不存在。
- 16 - Microsoft Distributed Transaction Coordinator (MSDTC) 失效。可能的子代碼如下:
- 01 - 資料庫管理程式無法與 MSDTC 通訊。
- 02 - MSDTC 無法登錄連線。子代碼代表 Microsoft 錯誤碼。
- 03 - MSDTC 無法將連線列入「分散式交易」中。子代碼代表 Microsoft 錯誤碼。
- 04 - 無法列入連線,因為有作用中交易。
- 05 - 沒有交易存在。尚未登記連線。
- 35 - 依經驗判斷的操作對非 XA 資料庫無效。
- 36 - 資料庫管理程式不認識 XID。
- 37 - 交易已用啟發的方式確定。
- 38 - 交易已用啟發的方式 Rollback。
- 39 - 交易不是未完交易。
- 40 - 此交易僅允許 Rollback。
- 41 - 節點故障,導致交易無法依經驗在某些 MPP 次節點中確定。
- 42 - DB2 Connect XA 支援只可對使用 TCPIP 來建立的出埠連線使用。
- 43 - 因為伺服器不支援 native XA,所以無法建立連線。
- 69 - 在 DUOW 重新同步化期間,發生資料庫日誌 ID 不相符。
- 85 - 因為依經驗判斷的處理,所以已不完全確定及 Roll Back 交易。
- 210 - 此交易僅允許經驗式的確定。部分節點已為確定狀態。
- 221 - 主機上的這個 DBMS 版本,需要所有參與相同 XA 交易的應用程式 皆使用相同的使用者 ID 來連接資料庫。
- 222 - 主機上的這個 DBMS 版本,需要所有參與相同 XA 交易的應用程式皆有相同的 CCSID。
- 223 - DB2 Connect XA 支援只對本端用戶端或使用 TCPIP 來建立入埠連接的遠端用戶端有效。
- 224 - DB2 Connect XA 支援只對 7.1 版以上有效。
- 225 - XA 模糊配對交易上的無效作業。可能的子代碼如下:
- 01 - 不容許 DDL 陳述式。
- 02 - 不容許更新和刪除 WHERE CURRENT OF 子句的指定。
- 03 - 不容許緩衝的插入作業。
- 04 - 此交易僅容許 Rollback。
- 05 - 不容許隱含的重新連結作業。
- 226 - 交易已被 Rollback。
- 227 - 應該在協調程式節點上執行經驗式的要求。
- 228 - 有開啟的游標。
- 229 - 先前的交易尚未完成。
- 230 - 交易已經確定了。
使用者回應
如為原因碼 1 到 8,系統日誌中將產生一個登錄,因為有時 SQLCA 可能無法傳回給呼叫程式。
如果錯誤是因與暱稱有關聯的失效資料來源而引起, 則失效資料來源的位置一定會出現在聯合伺服器的系統日誌中。
如為原因碼 4,請驗證 xa 開啟字串的內容,並作必要的更正。
若是原因碼 4、子碼 11,請確定 xa_config 檔案存在於 $SYBASE/$SYBASE_OCS 目錄中,且指定為 NODE 伺服器選項的 LRM 名稱存在於檔案中。
若原因碼為 9,子碼為 02,請確定 tp_mon_name 配置參數含有外部產品中的動態檔案庫的名稱, 該產品具有用於交易動態登記的 ax_reg() 函數。
若是原因碼 14,請檢查有無啟用 MSDTC 服務。
若是原因碼 15,當 MSDTC 交易逾時值太低時,可能會發生這個錯誤。如果錯誤持續發生,請增加逾時值。
原因碼 16:
- 子代碼 01,請確定 MSDTC 服務作用中。
- 子代碼 02,MSDTC 無法登錄連線。如需相關資訊,請參閱 db2diag 日誌檔或「Windows 事件檢視器」,以取得標題為 MicrosoftXARMCreate 的項目。
- 子代碼 03,MSDTC 無法將連線登記在「交易」內。如需相關資訊,請參閱 db2diag 日誌檔或「Windows 事件檢視器」,以取得標題為 MicrosoftEnlishWithRM 的項目。最常見的錯誤是現行交易已經明確或隱含地 Rollback。只要 MSDTC 交易逾時太短,就可能發生此錯誤。如果錯誤持續發生,請增加逾時值。
- 子代碼 04,試圖列入的連線,目前在不同的分散式交易中處於作用中狀態。
- 子代碼 05,試圖發出 SQL 陳述式之前,請先登記連線。
如為原因碼 35,表示您嘗試對一僅以唯讀資源管理程式性質參與廣域交易的資料庫,執行依經驗判斷的操作。範例包括任何 DRDA 資料庫,諸如 MVS 上的 DB2。這些非 XA 資料庫類型不會有任何 XA 未完交易。
如為原因碼 36、37 和 38,表示您嘗試在未完交易上執行無效的依經驗判斷的操作。 您指定了錯誤的 XID,或是從您記錄了這個 XID 後,發生了經驗式的作業或重新同步作業。 請執行「依經驗判斷的查詢」要求,取得未完交易的現行清單, 以驗證您是否仍需要執行依經驗判斷的操作。
如為原因碼 39,表示所指定的 XID 是給已結束的交易, 並且正在等候二階段確認處理開始。 對於已進入二階段確認處理並已成為未完交易的交易上,只能執行依經驗判斷的操作。
如為原因碼 40,表示您在已失效的交易下嘗試執行 SQL 陳述式。範例之一是:您在一交易緒中嘗試 SQL陳述式,而該交易緒已在參與同一交易的緊密耦合緒交易已異常終止後,成功地暫存。
如為原因碼 41,請參閱管理通知日誌中有關此問題的詳細資訊。 您需要在失敗的節點上重新啟動資料庫管理程式。可能需要請求系統管理者協助。
如為原因碼 42,修改閘道型錄為使用 TCPIP 通訊協定就可建立出埠連線。
若為原因碼 43,如果連接至 DB2 for z/OS 伺服器或 DB2 for i 伺服器,請使用 DB2 Connect 編目資料庫,然後啟動同步點管理程式。
如為原因碼 69,表示交易管理程式 (TM) 資料庫或資源管理程式 (RM) 資料庫,或是兩者與產生未完交易時的資料庫不同。換言之,TM 資料庫或 RM 資料庫名稱可以參照不同的資料庫實例。日誌 ID 不相符可能是由下列原因造成的:
- 在 RM 實例上,TM 資料庫的資料庫目錄不正確。
- 在產生未完交易之後,配置可能已變更。
- 可能已終止並重新建立資料庫。 如為此種情況,您只能以啟發方式確定或 Rollback 未完交易。
如為原因碼 85,您將更新多個資料來源,且有些資料來源已依經驗判斷,而被 Roll Back 或確定,因而造成不完全確定及 Roll Back 交易。 由於這個原因碼,資料目前是處於不一致狀態,您必須以人工方式,檢查交易所更新的每一個資料來源,以更正資料。
原因碼 210 顯示部分節點已為確定狀態。您必須執行經驗式的確定以分辨未完交易。
如果是原因碼 221,請確定所有參與相同 XA 交易的應用程式皆使用相同的使用者 ID 連接資料庫。
如果是原因碼 222,請確定所有參與相同 XA 交易的應用程式皆有相同的 CCSID。
如果是原因碼 223,請修改應用程式及用戶端設為使用本端用戶端, 若為遠端用戶端,請使用 TCPIP 作為連接閘道的通訊協定。
如果是原因碼 224,請將用戶端更新為 7.1 版以上。
若為原因碼 225,請確定應用程式並未包含「XA 模糊配對交易」上的無效交易。 可使用「XA 模糊配對交易」的一般應用程式伺服器環境,包括 IBM Encina Transaction Server、 IBM WebSphere Application Server、Microsoft Transaction Server 和 BEA Tuxedo。如果您發現此原因碼,則必須檢閱您的應用程式,並確保未執行所指出的任何動作。
如果是原因碼 226,交易已到達 Rollback 的狀態,且現在已在此節點上 Rollback。
如果是原因碼 227,應該在協調程式節點上執行經驗式的要求,請參閱 db2diag 日誌檔以取得協調程式節點號碼。
如果是原因碼 228,請確定在發出要求之前已關閉游標。
如果是原因碼 229,請確定在發出要求之前已完成先前的交易。
如果是原因碼 230,交易已經確定了。
一般資訊收集程序:
如果您無法解決原因碼所指出的問題,請記錄該訊息中的訊息碼 (SQLCODE)、 原因碼及選用性子碼,或系統日誌中的 SQLCA。
如果失效是起因於聯合資料庫, 您也應記錄在聯合伺服器的系統日誌中找到的失效資料來源的位置。
若追蹤處於作用中,則在作業系統指令行提示處呼叫「獨立追蹤機能」。然後,以下列資訊來聯絡技術服務代表:
- 問題說明
- SQLCODE 暗含的原因碼及次碼
- SQLCA 內容(如果可能的話)
- 追蹤檔(如果可能的話)
- 如果失效起因於聯合伺服器,則提供失效資料來源的位置。
交易管理程式和資料庫管理程式的主控台或資訊日誌中,可能還有其他資訊。
sqlcode:-998
sqlstate:58005