问题描述:
DB2 联邦(FEDERATION): 创建nickname报错时SQL30080N A communication error "-5" occurred ,复现过程如下,密码使用***代替:
复现:
使用db2实例用户执行以下SQL
catalog tcpip node node01 remote xxx.xxx.xxx.xxx server yyyyy;
terminate;
catalog db test as testrm at node node01;
terminate;
CONNECT TO SAMPLE;
CREATE WRAPPER DRDA;
CREATE SERVER MYSERVER
TYPE DB2/UDB
VERSION '10.5'
WRAPPER DRDA
AUTHORIZATION "user01"
PASSWORD "********"
OPTIONS
(DB2_CONCAT_NULL_NULL 'Y'
,DB2_TWO_PHASE_COMMIT 'Y'
,DB2_VARCHAR_BLANKPADDED_COMPARISON 'Y'
,DBNAME 'TESTRM'
,NO_EMPTY_STRING 'N'
);
CREATE USER MAPPING FOR "user01"
SERVER "MYSERVER"
OPTIONS
(REMOTE_AUTHID 'user01'
,REMOTE_PASSWORD '********'
);
CREATE NICKNAME "MYSC "."TABLE1"
FOR "MYSERVER"."MYSC"."TABLE1";
terminate ;
------
其中创建NICKNAME的时候报错
SQL30080N A communication error "-5" occurred sending or receiving data from
the remote database. SQLSTATE=08001
原因:
(注意SQL中的create user mapping for user01, 这一行的user01是指当前数据库的用户。 REMOTE_AUTHID 这一行的中user01是远程数据库的用户,这两个用户可以不同)
create user mapping for 哪个用户,这个语句就用哪个用户执行,所以上面的SQL使用user01用户执行就不会报错。