C# IBM.NET数据提供程序与库列表的连接字符串问题

C# IBM.NET数据提供程序与库列表的连接字符串问题,c#,db2,connection-string,ibm-midrange,C#,Db2,Connection String,Ibm Midrange,我试图在C#程序中使用DB2.Net数据提供程序,而不是依赖ODBC。下面的连接字符串可以工作,但只适用于一个库(假设我的库是test1和test2) 如果我在连接字符串中添加“Library List=test1,test2;”(我已经尝试了它的几种变体),则它不允许我访问其他库,只允许访问defaultcollection中定义的库。我也尝试过不指定默认集合,但这会导致查询根本不起作用。我需要做什么才能运行一个可以在同一连接上访问这两个库的查询?库列表仅在使用系统命名约定时有效 SQL_命名

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


如果我在连接字符串中添加“Library List=test1,test2;”(我已经尝试了它的几种变体),则它不允许我访问其他库,只允许访问defaultcollection中定义的库。我也尝试过不指定默认集合,但这会导致查询根本不起作用。我需要做什么才能运行一个可以在同一连接上访问这两个库的查询?

库列表仅在使用系统命名约定时有效

SQL_命名
指定表由以下形式的集合名称限定:

集合表

其中,collection是集合的名称,table是表名。默认限定符是运行执行SQL语句的进程的用户ID,在表名未显式限定且未指定默认集合名时使用。

系统命名
指定按以下形式的库名称限定文件:

库/文件

其中library是库和文件的名称 是表名。默认的搜索路径是 如果表名(文件)未明确限定,则不限定表名的库列表(*LIBL) 并且未指定默认集合名称(库)


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

;LibraryList=lib1,lib2,lib3,lib4;SchemaSearchList=lib1,lib2,lib3,lib4;
或者在连接作业上使用默认库列表,这很可能是在用户配置文件中定义的

;LibraryList=*USRLIBL;SchemaSearchList=*USRLIBL;

您可以按照lam的答案,例如,我使用它在测试库和生产库之间进行更改

但请检查iSeries的SO版本。一些旧版本不支持SchemaSearchList。
V6R1和V7R1版本支持它。

从v7.1中的TR 6开始,系统命名允许使用library.file语法,就像SQL命名一样。因此,系统命名允许使用标准语法以及库列表的优点。省略默认模式不是更好,但可能会更改当前库吗?设置默认模式是否与设置模式相同,从而停止使用库列表?
;LibraryList=*USRLIBL;SchemaSearchList=*USRLIBL;