DB2 的數據提供者會利用IBM SQLCAMESSAGE預存程式來傳回詳細的錯誤訊息。 若要使用這項功能,您應該將數據源設定為使用 Host CCSID 的 EBCDIC 值。
下表描述可能會發生的 DB2 伺服器錯誤以及要更正它們所需採取的動作。
| SQLSTATE | SQLCODE | 訊息 | 描述 |
|---|---|---|---|
| 42601 | -104 | 符號不正確。 Token 不是有效的未預期 Token。 在文字之後發現未預期的令牌令牌<>。<> 預期的令牌可能包括: <token-list>。 |
原因:伺服器無法執行包含不合法、無效或非預期符號或令牌的 SQL 語句。 動作:使用特定 IBM DB2 平臺和版本的 IBM DB2 SQL 參考來驗證 SQL 語法。 檢查數據取用者應用程式是否使用不支援的分隔對象標識碼 (例如方括號 ([<object-name>]) ,而不是使用支援的分隔符 (雙引號) 。 |
| 42602 | -113 | 找到的字元無效: <字串>、原因程序代碼 <原因碼>。 偵測到名稱中有無效的字元。 <identifier> 包含不允許或不包含任何字元的字元。 |
原因:當用戶端連線到 DB2 伺服器時,伺服器無法處理 SQL SET CURRENT SQLID 語句。 動作:確認連線資訊,以確保預設限定符值符合已編錄物件的 DB2 集合。 如需詳細資訊,請參閱預設限定符。 |
| 42802 | -117 | 指派的值數目與指定或默示的欄位數目不同。 陳述式包含錯誤的值數目。 指派的值數目與指定或默示的欄位或變數數目不同。 |
原因:當指定的值數目與數據表中的數據行數目不同時,伺服器無法執行 SQL INSERT 語句 (s) 。 動作:藉由查詢系統類別目錄 (,確認數據行數目符合 SQL 語句中的物件,例如 SYSDATA。SYSCOLUMNS) 或執行用戶端架構查詢 (例如 OLE DB IDBSchemaRowsets::GetSchemas (DBSCHEMA_COLUMNS) 或 ADO.NET MsDb2Connection.GetSchema (Columns) 。 |
| 22007 | -181 | 日期時間值的字串呈現不是有效的日期時間值 日期、時間或時間戳記字串形式的值無效。 日期時間值的字串呈現超出範圍。 |
原因:伺服器無法執行 SQL 語句,其中 DATETIME 值的格式不正確或超出範圍。 動作:確認 DATETIME 值在 0001-9999 年的支援範圍內, 1-12 年 1 月 12 日、28/29/30/31 日 (,視月份和閏年) 、0-24 (12 的美國) 、0-59 的分鐘數、0-59 秒的秒數 0-999999。 檢查連接資訊,確保 [當做 Date 的 DateTime] 選項指定為 True,以指示用戶端刪除對應至 DB2 Timestamp 資料值的 Windows DateTime 資料值的時間部分,讓 DB2 資料庫可將這些值當作 DB2 Date 資料值加以讀取。 如需詳細資訊,請參閱 DateTime As Date。 |
| 42704 | -204 | <schema>。<物件> 是未識別的名稱。 偵測到未定義的物件或條件約束名稱。 <name> 是未定義的名稱。 |
原因:伺服器無法執行參考無效 <架構>的 SQL 語句。<物件> 名稱。 動作:確認 SQL 語句中指定的物件名稱。 檢查連接資訊,確保 [預設限定詞] 值符合在其中編目物件的 DB2 集合。 如需詳細資訊,請參閱預設限定符。 |
| 42703 | -206 | <名稱> 在使用名稱的內容中無效 數據行 <名稱> 不在指定的數據表中。 <name> 在使用名稱的內容中無效。 |
原因:伺服器無法執行 SQL 語句,其中指定的數據行名稱不是來源或目標數據表或檢視表所參考 I 語句的數據行。 動作:藉由查詢系統目錄 (例如 SYSDATA,確認數據行參考符合 SQL 語句中的物件。SYSCOLUMNS) 或執行用戶端架構查詢 (,例如 OLE DB IDBSchemaRowsets::GetSchemas (DBSCHEMA_COLUMNS) 或 ADO.NET MsDb2Connection.GetSchema (Columns) 。 |
| 08S01 | -360 | 找不到主機資源。 檢查 [初始目錄] 值是否符合主機資源名稱。 | 原因:伺服器無法將用戶端連線到要求的DRDA RDBNAM (關係資料庫名稱) 。 動作:確認連線資訊以確保初始目錄值符合 DB2 for z/OS 位置名稱、DB2 for IBM i 關係資料庫目錄專案 (RDBDIRE) ,或適用於 Windows 資料庫名稱的 DB2。 如需詳細資訊,請參閱初始目錄。 |
| 42884 | -440 | 目前路徑中找不到<名稱例程名稱具有相容自變數的例>程類型>< 找不到具有所指定名稱和相容引數的常式。 找不到具<相容自變數之型<別例程名稱>的授權例程>名稱。 |
原因:伺服器無法執行 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) 。 驗證連接資訊,確保使用部分泛型取用者 (包括 SQL Server Integration Services 和分散式查詢處理器) 時,[自動認可] 選項指定為 True (如果使用遠端工作單位交易)。 如需詳細資訊,請參閱 AutoCommit。 |
| 42501 | -551 | 未授權存取物件。 未獲得資源名稱>類型 resource-type>< 中<物件<名稱>的授權。 <authorization-ID> 沒有在物件<物件名稱>上執行作業作業<>所需的授權或許可權。 |
原因:伺服器無法執行 SQL SELECT 或 CALL 語句,該語句需要儲存在目前使用者未獲授權之靜態 SQL 套件中的 CURSOR 語句。 用戶端依賴 DB2 靜態 SQL 封裝之區段中的預先定義 SQL 陳述式,來支援執行 SQL SELECT 陳述式。 如果執行階段使用者具有 [封裝集合] 連接屬性中所指定之 DB2 集合的封裝 BIND、EXECUTE 和 GRANT 權限,用戶端預設會自動定義封裝。 動作:確認連線資訊,以確保封裝集合值符合 DB2 集合,其中 HIS 2010 套件是定義供目前使用者識別碼或 PUBLIC 執行。 使用資料存取工具、資料來源精靈、資料連結或資料存取程式庫手動建立 HIS 2010 封裝,以供目前使用者識別碼或 PUBLIC 執行。 請使用授權自動建立 HIS 2010 封裝 (CREATE、BIND 和 EXECUTE 權限) 的授權識別碼,連接至 DB2。 如需詳細資訊,請參閱套件集合。 |
| 42501 42602 |
-567 -567 |
<bind-type> AUTHORIZATION ERROR USING <auth-id> AUTHORITY PACKAGE = <package-name> PRIVILEGE = <privilege>. 不允許授權名稱 &1。 <authorization-ID> 不是有效的授權標識符。 |
原因:當使用者帳戶沒有建立或執行必要 DB2 套件的許可權時,伺服器就無法執行 SQL SELECT 語句。 動作:確認連接資訊,以確保封裝集合值符合 DB2 集合,其中 HIS 2010 套件已定義供目前使用者識別碼或 PUBLIC 執行。 使用資料存取工具、資料來源精靈、資料連結或資料存取程式庫手動建立 HIS 2010 封裝,以供目前使用者識別碼或 PUBLIC 執行。 請使用授權自動建立 HIS 2010 封裝 (CREATE、BIND 和 EXECUTE 權限) 的授權識別碼,連接至 DB2。 如需詳細資訊,請參閱封裝集合。 |
| 42710 | -601 | 要定義之 OBJECTTO 定義的名稱 (版本或磁碟區序) 號,或重新命名語句的目標與物件類型物件名稱 <> (版本或磁碟區序號 <) 物件名稱>相同的現有名稱。 <架構>類型類型<>中<的名稱>已經存在。 要建立的物件名稱與類型類型的<>現有名稱<名稱>相同。 |
原因:當該名稱已用於相同類型的另一個物件時,伺服器無法為物件命名。 動作:相較於現有的資料庫物件,唯一命名物件。 |
| 42721 | -725 | 在位置<位置>的特殊註冊<緩存器>已提供無效的值 | 原因:伺服器在包含使用者識別碼或集合名稱無效的值時,無法處理SET CURRENT SQLID 語句。 動作:確認連接資訊,以確保預設限定符值符合已編錄物件的 DB2 集合。 如需詳細資訊,請參閱預設限定符。 |
| 23505 | -803 | 插入或更新的值無效,因為索引空間索引空間 <名稱> 中的索引會限制數據表的數據行,因此這些數據行中沒有任何兩個數據列可以包含重複的值。 RID OF EXISTING ROW IS X <row identifier> 指定的索引鍵值重複。 INSERT 語句、UPDATE 語句或 DELETE 語句所造成的外鍵更新中的一或多個值無效,因為索引鍵、唯一條件約束或索引值所<識別的唯一索引會限制數據表<數據表名稱>,而沒有索引鍵的重複>值。 |
原因:伺服器無法針對由 UNIQUE INDEX 限制的數據表執行 INSERT 或 UPDATE 語句,其中語句會產生重複的值。 動作:藉由查詢系統類別目錄 (例如 SYS“,”SYS],確認數據值不會違反條件約束。SYSINDEXES) 或執行用戶端架構查詢 (,例如 OLE DB IDBSchemaRowsets::GetSchemas (DBSCHEMA_INDEXES) 或 ADO.NET MsDb2Connection.GetSchema (Indexes) 。 |
| 51002 | -805 | DBRM 或套件名稱<位置名稱>。<collection-id>。<dbrmname>。<PLAN <plan-name> 中找不到 consistency-token>。 REASON 原因<>。 在DRDA Server 找不到collection-name中的 SQL 套件套件<名稱>>。< 找不到套件 <套件名稱> 。 |
原因:伺服器找不到 DB2 用戶端執行動態 SQL SELECT 語句所需的 DB2 靜態 SQL 封裝。 動作:確認連線資訊,以確保封裝集合值符合 DB2 集合,其中 HIS 2010 套件已定義供目前使用者識別碼或 PUBLIC 執行。 如需詳細資訊,請參閱封裝集合。 |
| 58004 | -901 | 因系統錯誤而導致執行失敗,但是後續 SQL 陳述式可能會順利執行。 SQL 系統錯誤。 因為發生非嚴重系統錯誤,所以 SQL 陳述式失敗。 可以處理後續 SQL 陳述式 (Reason reason<>.) |
原因:伺服器無法執行目前的 SQL 語句,但後續的 SQL 語句可能會成功。 此錯誤的原因可能是分散式工作單位內的交易認可失敗,或因條件約束的更新失敗,或是 SQL 陳述式包含無效長度 (0 或超出最大長度)。 動作:用戶應該檢查原因碼,以判斷是否需要進一步的使用者或系統管理員動作,以及藉由修改應用程式、交易或命令來判斷如何避免錯誤。 |
| 57011 | -904 | 因資源無法使用而導致執行失敗。 REASON <reason-code>、TYPE OF RESOURCE <resource-type>, AND RESOURCE NAME resource-name><。 已超出資源限制。 因資源無法使用而導致執行失敗。 原因代碼: <reason-code>、resource 類型: <resource-type> 和 resource name: <resource-name>。 |
原因:伺服器無法執行 SQL 語句,因為語句的對象無法使用。 動作:確認對象和資料庫可用,且無法處於死結、離線或其他無法使用狀態。 |
| 57033 | -913 | 因鎖死或逾時而導致執行失敗。 REASON CODE reason-code><、 TYPE OF RESOURCE <resource-type>, AND RESOURCE NAME resource-name><. 使用中資源名稱>類型資源類型的<>數據列或物件<物件名稱>。< 因鎖死或逾時而導致執行失敗。 原因碼 <原因碼>。 |
原因:伺服器無法執行 SQL 語句,因為語句的對象無法使用。 動作:確認對象和資料庫可用,且無法處於死結、離線或其他無法使用狀態。 認可或復原前一個作業,然後中斷資料庫的連接。 檢查伺服器理由代碼,以取得物件狀態的詳細資訊 (例如 DB2 for z/OS 理由代碼 00C90088 指出鎖死,而 00C9008E 指出逾時)。 |