3

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

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

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

4

3 回答 3

7

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

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

collection.table

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

SYSTEM_NAMING
指定文件由库名限定,格式为:

library / file

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

于 2013-10-31T21:54:33.807 回答
5

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

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

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

;LibraryList=*USRLIBL;SchemaSearchList=*USRLIBL;
于 2013-11-01T02:55:38.060 回答
1

您可以按照 lamLam 回答,例如,我用它在测试库和生产库之间进行切换。

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

于 2014-02-06T17:27:33.947 回答