`
javathinker
  • 浏览: 235461 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

DB2 创建和使用nickname 报错 SQL1101N

 
阅读更多

在使用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

    在DB2数据库系统中,NickName(昵称)是一种非常重要的概念,特别是在处理跨数据库查询时。NickName允许用户在不...通过正确创建和管理NickName,用户能够更高效地利用分布式数据库资源,并简化多数据库环境的管理。

    db2 sql手册2

    本手册是关于IBM DB2 Universal Database(简称DB2 UDB)SQL语言使用的详细指南,适用于DB2 Version 8.2版本。作为一套完善的SQL手册,它为数据库操作与编程提供了有力的支持。 #### 二、目标读者 本手册主要面向...

    DB2联邦配置

    - 为`TESTDB`数据库中的`WORKITEM`表创建昵称:`CREATE NICKNAME ADMINISTRATOR.WORKITEM FOR TESTDB.DB2ADMIN.WORKITEM` 7. **执行联合查询**: - 现在可以在`SAMPLE`数据库中使用`TESTDB`数据库中的`WORKITEM`...

    sql妙用(绝妙的sql语句)

    SQL是Structured Query Language的缩写,是用于管理和处理关系数据库的标准语言。在SQL中,有些技巧和用法能够显著提高你的工作效率,使你更好地利用数据库。以下是一些关于SQL妙用的关键知识点: 1. **动态SQL**:...

    动态SQL语句基本语法

    注意:在使用sp_executesql时,字符串前面需要加上N,以指定字符串类型为nvarchar。 二、字段名、表名、数据库名作为变量时,必须用动态SQL 当字段名、表名、数据库名作为变量时,需要使用动态SQL语句来构建SQL...

    db2 联邦查询示例

    db2 update dbm cfg using federated yes db2 catalog node (node节点登录) db2 catalog database (database数据库登录) db2 connect to db (连接到...db2 create nickname (创建连接到对方表的nickname)

    sql语句妙用,各种sql语句的详细用法与讲解 .doc

    6. 在处理大数据时,索引的创建和管理也是SQL的重要部分,它可以显著提高查询性能。索引可以基于一个或多个列,包括唯一索引、非唯一索引、全文索引和空间索引等。 7. 视图是虚拟表,由SQL查询定义,提供了一种抽象...

    SQL数据库 查询语句使用精华

    本文将详细介绍SQL查询语句的基本构成和使用技巧,帮助读者更高效地进行数据检索。 #### 二、基本查询语句详解 ##### 1. SELECT * FROM 表名 这是最基本的查询语句形式,用于从指定的表中获取所有列的数据。 **...

    SQL查询语句使用

    ### SQL查询语句使用 #### 一、基本概念与结构 在进行数据库操作时,**SQL(Structured Query Language)**是一种极为重要的语言工具,用于管理关系型数据库管理系统中的数据。SQL不仅能够帮助我们检索数据,还能...

    动态SQL语句基本语法.doc

    动态SQL语句是SQL语言中的一种特殊语句,能够根据不同的条件和变量生成不同的SQL语句。本文将详细介绍动态SQL语句的基本语法和应用场景。 1. 动态SQL语句的基本语法 动态SQL语句可以使用 Exec 或 sp_executesql ...

    SQL查询语句精华~

    总的来说,SQL查询语句是数据库管理的重要工具,通过熟练掌握选择列表和FROM子句的使用,可以实现高效、准确的数据检索。这不仅限于基本的列选择和数据过滤,还包括列标题的自定义、去重、限制行数以及从复杂查询...

    SQLSERVER试题

    这条SQL语句选取了Users表中BloodID字段值为'00'(代表O型血)的用户,返回他们的昵称(NickName)和性别(Sex)。 2. 使用交叉连接查询,查询出血型为“A型”并且星座为“白羊座”的用户姓名和性别: ```sql ...

    SQL查询语句精华使用简要

    【SQL查询语句精华使用简要】 SQL查询语句是数据库操作的核心,主要由选择列表(SELECT)、FROM子句和WHERE子句组成,用于获取、筛选和组织数据。以下是这三个关键部分的详细说明: 1. **选择列表 (SELECT)** - *...

    SQL查询及操作 SQL查询及操作

    同时,`TOP n`或`TOP n PERCENT`可以限制返回的行数,前者返回n行,后者返回总行数的n%。 - 示例: ```sql SELECT * FROM testtable; -- 查询所有列 SELECT nickname, email FROM testtable; -- 选择指定列 ...

    SQL应知道的动态SQL语句基本语法(总计82页Wrod)

    或者使用`sp_executesql`存储过程,它是SQL Server推荐的执行动态SQL的方式,因为它提供了更好的安全性和性能。例如: ```sql EXEC sp_executesql N'SELECT * FROM tableName' ``` 注意,使用`sp_executesql`时...

    SQL查询语句精华及SQL学习的常用资料

    本篇文章将深入探讨SQL查询语句的精华部分,主要包括简单查询的三个方面:选择列表、FROM子句和WHERE子句。 首先,我们来看选择列表。选择列表指定查询的列,可以包含列名、*(代表所有列)、表达式、变量等。例如...

    SQLserver查询语句大全

    本文档将详细介绍 SQL Server 查询语句的基本结构、选择列表、FROM 子句、WHERE 子句、ORDER BY 子句、LIMIT 子句等基本组件的使用方法和应用场景。 一、 简单查询 简单的 Transact-SQL 查询语句包括选择列表、...

    sql语句妙用,各种sql语句的详细用法与讲解

    除此之外,还有DDL(Data Definition Language,数据定义语言)用于创建和修改数据库结构,DML(Data Manipulation Language,数据操纵语言)用于处理数据库中的数据,以及DCL(Data Control Language,数据控制语言...

    sql语句 妙用,各种sql语句 的详细 用法 与讲解

    例如,`DECLARE @num INT, @sqls NVARCHAR(4000)`声明变量,`@sqls`存储SQL语句,然后使用`sp_executesql @sqls, N'@a INT OUTPUT', @num OUTPUT`执行并捕获结果,最后通过`SELECT @num`展示结果。 在SQL Server中...

Global site tag (gtag.js) - Google Analytics