共用方式為


Data Provider for DB2 常見錯誤

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 指出逾時)。