DB2 的資料提供者利用 IBM SQLCAMESSAGE 儲存程序來回傳詳細錯誤訊息。 要使用此功能,應該將資料來源設定為 EBCDIC 值用於主機 CCSID。
下表說明了可能發生的 DB2 伺服器錯誤,以及你必須採取的修正行動。
| SQLSTATE | SQLCODE | Message | 說明 |
|---|---|---|---|
| 42601 | -104 | 非法符號。 令牌無效,意外的憑證。 在<文字>後面發現了一個意想不到的標記<token>。 預期代幣可能包括: <代幣列表>。 |
理由:伺服器無法執行包含非法、無效或意外符號或標記的 SQL 語句。 操作:使用針對特定 IBM DB2 平台及版本的 IBM DB2 SQL 參考驗證 SQL 語法。 檢查資料消費者應用程式是否使用不支援的分隔物件識別碼(例如方括號([<object-name>]),而非支援的分隔符(雙引號)。 |
| 42602 | -113 | 在<串>中發現無效字元,原因代碼 <原因代碼>。 偵測到名稱中無效的字元。 <識別碼> 包含不允許使用的字元或沒有包含任何字元。 |
原因:當用戶端連接到 DB2 伺服器時,伺服器無法處理 SQL SET CURRENT SQLID 陳述式。 操作:驗證連線資訊,確保預設限定符值與所編目物件的 DB2 集合相符。 更多資訊請參閱預設限定詞。 |
| 42802 | -117 | 分配的值數與指定或隱含欄位的數量不同。 陳述中包含錯誤數量的數值。 分配的值數量與指定或隱含欄位或變數的數量不同。 |
原因:當指定的值數與資料表中的欄位數不同時,伺服器無法執行 SQL INSERT 語句。 動作:透過查詢系統目錄(例如 SYSIBM)來驗證欄位數量是否與 SQL 陳述式中的物件相符。SYSCOLUMNS)或執行用戶端結構查詢(例如 OLE DB IDBSchemaRowsets::GetSchemas(DBSCHEMA_COLUMNS)或 ADO.NET MsDb2Connection.GetSchema(Columns)。 |
| 22007 | -181 | DATETIME 值的字串格式表示並非有效的 DATETIME 值 日期、時間或時間戳記字串的值無效。 日期時間值的字串表現超出範圍。 |
原因:伺服器無法執行 DATETIME 值格式錯誤或超出範圍的 SQL 陳述式。 操作:確認 DATETIME 值在 0001-9999 年、1-12 月、28/29/30/31 日(視月份與閏年而定)、0-24 小時(美國為 12)、0-59 分鐘、0-59 秒及 0-9999999 微秒的支援範圍內。 檢查連線資訊以確保 DateTime As Date 選項為 True,指示用戶端刪除 Windows DateTime 資料值中對應至 DB2 時間戳資料值的時間部分,讓 DB2 資料庫能將這些值讀取為 DB2 Date 資料值。 欲了解更多資訊,請參閱DateTime As Date。 |
| 42704 | -204 |
<Schema>。<物件> 是一個未識別的名稱。 偵測到未定義的物件或條件約束名稱。 <名字> 是未定義的名字。 |
原因:伺服器無法執行引用無效 <結構>的 SQL 語句。<物件> 名稱。 動作:驗證 SQL 陳述中指定的物件名稱。 檢查連線資訊,確保預設限定符值與物件目錄的 DB2 集合相符。 更多資訊請參閱「預設限定詞」。 |
| 42703 | -206 |
<名稱> 在所使用的情境中無效 <欄位名稱>不在指定資料表中。 < >名稱在使用情境中並不適用。 |
原因:伺服器無法執行 SQL 陳述句,因為所指定的欄位名稱不是該陳述句中所參考的來源或目標資料表或視圖的欄位。 動作:透過查詢系統目錄(例如 SYSIBM)來驗證欄位引用是否與 SQL 陳述句中的物件相符。SYSCOLUMNS)或執行用戶端結構查詢(例如 OLE DB IDBSchemaRowsets::GetSchemas(DBSCHEMA_COLUMNS)或 ADO.NET MsDb2Connection.GetSchema(Columns)。 |
| 08S01 | -360 | 找不到主機資源。 檢查初始目錄值是否與主機資源名稱相符。 | 原因:伺服器無法將客戶端連接到所請求的 DRDA RDBNAM(關聯式資料庫名稱)。 操作:驗證連線資訊,確保初始目錄值與 DB2(z/OS 位置名稱)、DB2(IBM i 關聯式資料庫目錄條目(RDBDIRE)或 DB2(Windows 資料庫名稱)相符。 欲了解更多資訊,請參閱初始目錄。 |
| 42884 | -440 | 目前路徑中找不到名為<例程名稱>且具有相容參數的<例程類型>。 未找到符合指定名稱且參數相容的例程。 未找到具有相容參數且類型為<的授權例程名稱<routine-name>。 |
原因:伺服器無法執行包含錯誤數量參數、無效參數資料型別或引用無效 <結構>的 SQL CALL 語句。<物件> 名稱。 動作:驗證參數數量。 檢查參數資料型別。 驗證 SQL 陳述中指定的物件名稱。 檢查連線資訊,確保預設限定符值與物件目錄的 DB2 集合相符。 更多資訊請參閱預設限定詞。 |
| 24501 | -501 | 在 FETCH 或 CLOSE 語句中識別的游標未開啟。 游標 <游標名稱> 未開啟。 FETCH 語句或 CLOSE 語句中指定的游標未開啟,或游標標量函數參考中的游標變數未開啟。 |
原因:伺服器無法執行需要針對非開放狀態的 CURSOR 執行 FETCH 或 CLOSE 的 SQL SELECT 或 CALL 語句。 動作:確認應用程式沒有發出 COMMIT 或 ROLLBACK,否則可能會關閉游標。 檢查先前收到的回傳訊息,可能表示伺服器會根據系統事件自動關閉游標(例如 SQLCODE -404、-652、-679、-802、-901、-904、-909、-910、-911、-913 或 -952)。 請驗證連線資訊,以確保當使用遠端工作單位交易時,自動提交選項被指定為 True,此適用於某些通用消費者,包括 SQL Server Integration Services 與分散式查詢處理器。 欲了解更多資訊,請參閱 AutoCommit。 |
| 42501 | -551 | 無權反對。 未授權對 <resource-name> 類型 <resource-type> 中的物件 <object-name> 提出異議。 <authorization-ID> 沒有執行物件<物件名稱>操作所需的授權或權限<>。 |
原因:伺服器無法執行需要儲存在靜態 SQL 套件中且目前使用者未授權的 CURSOR 陳述式的 SQL SELECT 或 CALL 語句。 用戶端依賴 DB2 靜態 SQL 套件中預定義的 SQL 語句,以支援執行 SQL SELECT 語句。 預設情況下,若執行時使用者擁有在 Package Collection 連線屬性中指定的 DB2 集合上套件的 BIND、EXECUTE 及 GRANT 權限,客戶端會自動定義套件。 動作:驗證連線資訊,確保套件集合值與定義 HIS 2010 套件並依目前使用者識別碼或 PUBLIC 執行的 DB2 集合相符。 手動建立 HIS 2010 套件,依目前使用者 ID 或 PUBLIC,使用資料存取工具、資料來源嚮導、資料連結或資料存取函式庫執行。 使用一個授權 ID 連接 DB2,該 ID 有特權可自動建立 HIS 2010 套件(CREATE、BIND 和 EXECUTE 權限)。 欲了解更多資訊,請參閱套件集合。 |
| 42501 42602 |
-567 -567 |
<bind-type> 授權錯誤 使用 Auth-ID <> AUTHORITY PACKAGE = <package-name> PRIVILEGE = <privilege>。 授權名稱 &1 不被允許。 <authorization-ID> 並非有效的授權 ID。 |
原因:當使用者帳號沒有建立或執行所需 DB2 套件的權限時,伺服器無法執行 SQL SELECT 語句。 動作:驗證連線資訊,確保套件集合值與定義 HIS 2010 套件並依目前使用者識別碼或 PUBLIC 執行的 DB2 集合相符。 手動建立 HIS 2010 套件,依目前使用者 ID 或 PUBLIC,使用資料存取工具、資料來源嚮導、資料連結或資料存取函式庫執行。 使用一個授權 ID 連接 DB2,該 ID 有特權可自動建立 HIS 2010 套件(CREATE、BIND 和 EXECUTE 權限)。 欲了解更多資訊,請參閱套件集合。 |
| 42710 | -601 | 要定義的物件名稱(版本或卷序號)或重命名語句的目標,與現有的名稱(版本或卷序號)<object-name> 的物件類型 <object-type> 相同。 <schema 類型的><名稱><>已經存在。 要建立的物件名稱與現有型別<>的名稱<>相同。 |
原因:當該物件名稱已被用於同類型的另一個物件時,伺服器無法命名該物件。 動作:將物件命名為與現有資料庫物件唯一的名稱。 |
| 42721 | -725 | 特殊暫存器在位置<>位置的暫存<>器被提供無效值 | 原因:當 SET CURRENT SQLID 陳述句中使用者識別碼或集合名稱值不正確時,伺服器無法處理。 操作:驗證連線資訊,確保預設限定符值與所編目物件的 DB2 集合相符。 更多資訊請參閱預設限定詞。 |
| 23505 | -803 | 插入或更新的值無效,因為索引空間 <中的索引空間 INDEXSPACE-name> 限制了資料表的欄位,因此這些欄位中不會有兩列包含重複值。 清除現有列即為 X <列識別碼> 重複的鍵值已指定。 INSERT 陳述式、UPDATE 陳述式或由 DELETE 陳述式引起的外鍵更新中的一個或多個值不有效,因為主鍵、唯一限制或由 <index-id> 識別的唯一索引限制了表格 <名稱的索引鍵> 值重複。 |
原因:伺服器無法對受唯一索引限制的資料表執行 INSERT 或 UPDATE 語句,否則該語句會導致重複值。 動作:透過查詢系統目錄(例如 SYSIBM)來驗證資料值未違反限制。SYSINDEXES)或執行用戶端結構查詢(例如 OLE DB IDBSchemaRowsets::GetSchemas(DBSCHEMA_INDEXES) 或 ADO.NET MsDb2Connection.GetSchema(Indexes)。 |
| 51002 | -805 | DBRM 或程序包名稱 <位置名稱>.<集合 ID>.<DBRM 名稱>.<一致性令牌> 在 PLAN <計畫名稱>中找不到。 理由<理由>。 SQL 套件 <package-name> 在集合 <collection-name> 中無法在 DRDA 伺服器找到。 找不到套件 <package-name>。 |
原因:伺服器找不到 DB2 用戶端執行動態 SQL SELECT 語句所需的 DB2 靜態 SQL 套件。 動作:驗證連線資訊,確保套件收集值與 DB2 集合相符,該集合中 HIS 2010 套件由目前使用者 ID 或 PUBLIC 定義執行。 欲了解更多資訊,請參閱套件集合。 |
| 58004 | -901 | 因系統錯誤導致的執行失敗,但並不妨礙後續 SQL 陳述式的成功執行。 SQL 系統錯誤。 SQL 陳述句因非嚴重的系統錯誤而失敗。 後續的 SQL 陳述式可以被處理。 (理由是 <這樣>。) |
原因:伺服器未能執行目前的 SQL 語句,但後續的 SQL 語句可能成功。 此錯誤可能由分散式工作單元內的交易提交失敗、更新因限制失敗,或 SQL 陳述式包含無效長度(0 或超過最大長度)所引起。 操作:使用者應檢查原因碼(如有),判斷是否需要進一步的使用者或管理員操作,並決定如何透過修改應用程式、交易或指令來避免錯誤。 |
| 57011 | -904 | 因資源無法使用而導致執行失敗。 REASON <REASON-code>、資源 <類型資源類型>,以及資源名稱 <資源名稱>。 資源上限已超過。 因資源無法取得而導致執行失敗。 原因代碼: <reason-code>,資源類型: <resource-type>,資源名稱: <resource-name>。 |
原因:伺服器無法執行 SQL 陳述式,因為該陳述式的物件無法使用。 操作:確認物件與資料庫是否可用,且未陷入死結、離線或其他無法取得的狀態。 |
| 57033 | -913 | 因死鎖或逾時而導致執行失敗。 原因代碼 <reason-code>、資源 <類型 resource-type>,以及資源名稱 <resource-name>。 Row 或 object <object-name> 在 <resource-name> 類型 <resource-type> 中使用。 因死結或逾時而導致執行失敗。 理由代碼 <理由代碼>. |
原因:伺服器無法執行 SQL 陳述式,因為該陳述式的物件無法使用。 操作:確認物件與資料庫是否可用,且未陷入死結、離線或其他無法取得的狀態。 提交或回滾先前操作,然後斷開與資料庫的連結。 請查看伺服器原因碼以獲得物件狀態的更多資訊(例如 DB2 for z/OS 原因碼 00C90088 表示死結,而 00C9008E 則表示逾時)。 |