在使用DB2的联邦功能时在创建nickname及使用nickname的时候最常见的报错就是SQL1101N,提示用户名或者密码不对不能访问远程数据源。
下面说一下最常见的原因。
一 创建过程中报错
创建db2的联邦通常包含以下四步:
1 CREATE WRAPPER DRDA
2 CREATE SERVER
3 CREATE USER MAPPING
4 CREATE NICKNAME
本地sample数据库要与远程qa数据库做联邦,qa数据库已经编目到本地,实例参数FEDERATED已开启,实际创建过程如下:
db2inst1@lbdb:~> db2 connect to sample
Database Connection Information
Database server = DB2/LINUXX8664 9.7.4
SQL authorization ID = DB2INST1
Local database alias = SAMPLE
db2inst1@lbdb:~> db2 CREATE WRAPPER DRDA
DB20000I The SQL command completed successfully.
db2inst1@lbdb:~> db2 "CREATE SERVER trans TYPE DB2/UDB VERSION '9.7' WRAPPER DRDA AUTHID "userdb" PASSWORD "possword" OPTIONS( ADD DBNAME 'QA', PASSWORD 'Y' )"
DB20000I The SQL command completed successfully.
db2inst1@lbdb:~> db2 "CREATE USER MAPPING FOR "test" SERVER trans OPTIONS ( ADD REMOTE_AUTHID 'userdb', ADD REMOTE_PASSWORD 'possword') "
DB20000I The SQL command completed successfully.
db2inst1@lbdb:~> db2 CREATE NICKNAME shad.employee FOR trans.shad.employee
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL1101N Remote database "QA" on node "" could not be accessed with the
specified authorization id and password. SQLSTATE=08004
问题在哪里呢?
用户名及密码都正确,而且这里也不是密码大小写问题
解决方法:
创建nickname时必须由mapping中定义的数据库用户创建,其他用户不可以,实例用户也不行,除非实例用户在mapping中定义。
我们大多数管理员习惯使用实例用户去创建nickname,如果我们定义的mpping用户与管理用户不一致反而会报错。
如上面例子中mapping定义的用户为“test”,则必须进行下面的操作:
db2inst1@lbdb:~> db2 connect to sample user test using possword
Database Connection Information
Database server = DB2/LINUXX8664 9.7.4
SQL authorization ID = TEST
Local database alias = SAMPLE
db2inst1@lbdb:~> db2 CREATE NICKNAME shad.employee FOR trans.shad.employee
DB20000I The SQL command completed successfully.
二 使用nickname(select,insert,delete)
沿用前面的环境
db2inst1@lbdb:~> db2 connect to sample
Database Connection Information
Database server = DB2/LINUXX8664 9.7.4
SQL authorization ID = DB2INST1
Local database alias = SAMPLE
db2inst1@lbdb:~> db2 "select * from shad.employee "
SQL1101N Remote database "QA" on node "" could not be accessed with the
specified authorization id and password. SQLSTATE=08004
同样我们更换数据库用户
db2inst1@lbdb:~> db2 connect to sample user test using possword
Database Connection Information
Database server = DB2/LINUXX8664 9.7.4
SQL authorization ID = TEST
Local database alias = SAMPLE
db2inst1@lbdb:~> db2 "select * from shad.employee "
结果就完全正常
总结:
1 创建和使用nickname必须使用mapping中定义的用户
2 如果希望其他用户也能使用nickname必须增加相应的mapping定义
分享到:
相关推荐
DB2创建NickName即联邦数据库SQL,供大家参考
db2 update dbm cfg using federated yes db2 catalog node (node节点登录) db2 catalog database (database数据库登录) db2 connect to db (连接到...db2 create nickname (创建连接到对方表的nickname)
MySQL5.7版本,未加密,直接转储即可使用,大约6W条,适用于初始用户建立。游戏随机名称、机器人名称、QQ、微信个性网名大全
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 代码:...
将SQL DDL语句转换为JSON格式(JSON模式和紧凑格式)。 承诺中 了解内部 手边的脚本Visual Studio程式码 链接 概述 使用以下SQL: CREATE TABLE users ( id INT ( 11 ) NOT NULL AUTO_INCREMENT, nickname ...
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 SELECT ...
简单的Transact-SQL 查询只包括选择列表、FROM 子句和WHERE 子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。 例如,下面的语句查询testtable 表中姓名为“张三”的nickname 字段和email 字段。 代码...
注意sql server类和access数据库可以使用vs自带的数据库启动,不需要安装庞大的sql安装包。 软件特色,网站使用了ffmpeg.exe作为视频转换方式,把avi,wmv 转换为flv的形式进行播放和图片截取。后期也可以使用...
注意sql server类和access数据库可以使用vs自带的数据库启动,不需要安装庞大的sql安装包。 软件特色,网站使用了ffmpeg.exe作为视频转换方式,把avi,wmv 转换为flv的形式进行播放和图片截取。后期也可以使用...
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 SELECT ...
DB2_常用命令DB2_常用命令DB2_常用命令DB2_常用命令
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 SELECT ...
然后使用source命令,后面参数为脚本文件(如这里用到的.sql) mysql>source wcnc_db.sql B:使用mysqldump命令 mysqldump -u username -p dbname < filename.sql C:使用mysql命令 mysql -u username -p -D dbname ...
一、 简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段...
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。
收集各类SQL语句,SELECT `nickname`,`email`FROM `testtable`WHERE `name`='张三'
nickname changer to change nickname nickin
随机用户昵称,七十几万条,测试使用,文件是sql形式导出来的,要会MySQL数据库基本操作,导入需要一定的时间,数据量有七十几万条,表结构如下: CREATE TABLE `random_nickname` ( `id` bigint NOT NULL AUTO_...
登录服务器,如果服务器端口号和IP号输入的字符都是"0"则,客户端连接到默认的服务器 2.输入聊天昵称 3.输入"-quit"会自动退出聊天 4.输入"-getList"会得到在线用户的名称 5.输入"-to <用户名称> ...
一、 简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和Where子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email...