我试图在C#程序中使用DB2 .Net Data Provider而不是依赖ODBC。下面的连接字符串可以工作,但只适用于一个库(比如我的库是test1和test2)。
Data Source=xxx.xxx.xxx.xxx;User Id=testuser;Password=testpassword;
Naming=SQL;Default Collection=test1;
如果我添加“Library List = test1,test2;” (我已尝试过几种变体)连接字符串,它不允许我访问其他库,只允许访问defaultcollection中定义的库。我也尝试过不指定默认收集,但这导致查询根本不起作用。如何能够运行可以在同一连接上访问这两个库的查询,我需要做什么?
答案 0 :(得分:7)
库列表仅在使用系统命名约定时有效。
SQL_NAMING
指定表格由表单中的集合名称限定:
collection.table 的
其中collection是集合的名称,table是表名。默认限定符是运行执行SQL语句的进程的用户标识,并在未明确限定表名且未指定缺省集合名时使用。
SYSTEM_NAMING
指定文件由库名称限定,格式为:
图书馆/档案
其中library是库和文件的名称 是表名。默认搜索路径是 如果表名(文件)未明确限定,则为非限定表名的库列表(* LIBL) 并且未指定默认集合名称(库)。
答案 1 :(得分:5)
使用Naming=SQL
,如果在库列表中指定库,则不需要使用默认集合。只需添加以下内容:
;LibraryList=lib1,lib2,lib3,lib4;SchemaSearchList=lib1,lib2,lib3,lib4;
或使用连接作业上的默认库列表,这很可能是在用户配置文件中定义的。
;LibraryList=*USRLIBL;SchemaSearchList=*USRLIBL;
答案 2 :(得分:1)
您可以关注lamLam回答,例如我在测试库和生产库之间进行更改。
但请查看iSeries SO版本。某些旧版本不支持SchemaSearchList。 版本V6R1和V7R1支持它。