使用IBMDASQL提供程序将链接服务器的数据从SQL Server插入AS400数据库时出错

时间:2013-07-21 06:55:17

标签: sql-server-2008 ibm-midrange linked-server

运行查询后,出现以下错误:

OLE DB provider "IBMDASQL" for linked server "DB2400OLEDB" returned message "SQL7008: TABLE1 in STAGING not valid for operation.
Cause . . . . . :   **The reason code is 3.** 
 Reason codes are: 
1 -- TABLE1  has no members. 
2 -- TABLE1  has been saved with storage free. ***
3 -- TABLE1  not journaled, no authority to the journal, or the journal state is *STANDBY.  Files with an RI constraint action of CASCADE, SET NULL, or SET DEFAULT must be journaled to the same journal.***
4 and 5 -- TABLE1  is in or being created into production library but the user has debug mode UPDPROD(*NO). 
6 -- Schema being created, but user in debug mode with UPDPROD(*NO).
7 -- A based-on table used in creation of a view is not valid. Either the table is program described table or it is in a temporary schema. 
8 -- Based-on table resides in a different ASP than ASP of object being created. 
9 -- Index is currently held or is not valid. 
10 -- A constraint or trigger is being added to an invalid type of table, or the maximum number of triggers has been reached, or all nodes of the distributed table are not at the same release level. 
11 -- Distributed table is being created in schema QTEMP, or a view is being created over more than one distributed table.
12 -- Table could not be created in QTEMP, QSYS, QSYS2, or SYSIBM because it contains a column of type DATALINK having the FILE LINK CONTROL option.
13 -- The table contains a DATALINK column or a LOB column that conflicts with the data dictionary.
14 -- A DATALINK, LOB, or IDENTITY column cannot be added to a non SQL table.
15 -- Attempted to create or change an object using a commitment definition in a different ASP.
16 -- Sequence TABLE1  in STAGING was incorrectly modified with a CL command.
17 -- The table is not usable because it contains partial transactions. Recovery  . . . :
   Do one of the following based on the reason code:
   1 -- Add a member to TABLE1  (ADDPFM).
   2 -- Restore TABLE1  (RSTOBJ). 3 -- Start journaling on TABLE1 (STRJRNPF), get access to the journal, or change the ...

1 个答案:

答案 0 :(得分:2)

IBMDASQL确实支持承诺控制;不是IBMDA400(根据http://www-01.ibm.com/support/docview.wss?uid=nas8N1014514链接)。如果表未记录,则事务必须在禁用承诺控制的情况下运行。这是一个不好的做法。该表应该记录下来。如果它导致严重的性能问题,那几乎可以肯定,因为系统太小而无法完成工作负载或配置不佳。