IBM .NET数据提供程序连接字符串问题和库列表

3

我尝试在C#程序中使用DB2 .Net数据提供程序,而不是依赖ODBC。下面的连接字符串可以工作,但仅适用于一个库(假设我的库是test1和test2)。

Data Source=xxx.xxx.xxx.xxx;User Id=testuser;Password=testpassword;
Naming=SQL;Default Collection=test1;

如果我在连接字符串中添加“Library List=test1, test2;”(我已经尝试了几种变化形式),它不允许我访问其他附加库,只能访问默认集合中定义的内容。我也尝试过不指定默认集合,但这会导致查询完全无法工作。我需要做什么才能运行一个可以访问这两个库的查询?
3个回答

7

只有在使用系统命名约定时,库列表才有效。

SQL_NAMING
指定表格以以下形式的集合名称进行限定:

collection.table

其中 collection 是集合的名称,table 是表格的名称。当表格名称未经明确限制且默认集合名称未指定时,则使用执行 SQL 语句的进程的用户 ID 作为默认限定符。

SYSTEM_NAMING
指定文件以以下形式的库名称进行限定:

library / file

其中 library 是库的名称,file 是表格的名称。当表格名称(文件)未经明确限定且未指定默认集合名称(库)时,则使用库列表 (*LIBL) 作为未经限定的表格名称的默认搜索路径。


从v7.1的TR 6开始,系统命名允许使用库文件语法,就像SQL命名一样。因此,系统命名允许使用标准语法以及库列表的优点。 - WarrenT
省略默认模式,改变当前库是否更好呢?设置默认模式不就等同于SET SCHEMA,停止使用库列表吗? - WarrenT

5

使用Naming=SQL时,如果在库列表中指定了库,则无需使用默认集合。只需要添加类似如下的内容:

;LibraryList=lib1,lib2,lib3,lib4;SchemaSearchList=lib1,lib2,lib3,lib4;

或者在连接作业中使用默认库列表,该列表很可能已在用户配置文件中定义。

;LibraryList=*USRLIBL;SchemaSearchList=*USRLIBL;

1
你可以按照lamLam的答案进行操作,我以此为例,介绍如何在测试库和生产库之间切换。
但是请检查iSeries操作系统版本。一些旧版本不支持SchemaSearchList。V6R1和V7R1版本支持它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接