【问题标题】:SQL0332N Character conversion from the source code page "" to the target code page "" is not supportedSQL0332N 不支持从源代码页“”到目标代码页“”的字符转换
【发布时间】:2021-06-21 13:44:56
【问题描述】:

我正在尝试从 .NET 5 控制台应用程序连接到 IBM DB2 数据库。这对本地 Docker 实例中的 DB2 LUW 效果很好,但在连接到 z/OS 大型机实例时会失败。

服务器:

  • IBM DB2 v11.5
  • z/OS

客户:

  • .NET 5 控制台应用程序
  • IBM.Data.DB2.Core (v3.1.0.400)
  • IBM 数据服务器驱动程序 (v11.5)

错误:

IBM.Data.DB2.Core.DB2Exception (0x80004005): ERROR [57017] [IBM] SQL0332N  Character conversion from the source code page "" to the target code page "" is not supported.  SQLSTATE=57017
    at IBM.Data.DB2.Core.DB2ConnPool.Open(DB2Connection connection, String& szConnectionString, DB2ConnSettings& ppSettings, Object& ppConn)
    at IBM.Data.DB2.Core.DB2Connection.Open()
    at <my code>

连接字符串:

Database=<redacted>;User ID=<redacted>;Password=<redacted>;Server=<redacted>:448;Persist Security Info=True;CurrentSchema=<redacted>;Connect Timeout=30

打开连接:

var connection = new DB2Connection(connectionString);

try
{
    connection.Open();
}
catch (DB2Exception e)
{
    logger.LogError("Unable to access DB2 instance");
    logger.LogError(e.ToString());

    throw new DbAccessAcception(e);
}

我正在测试的 DB 用户已被另一个 .NET 程序用于连接到此数据库,尽管该应用程序较旧 (.NET Framework 3.5)。

我的尝试:

  • 使用DB2CODEPAGE 环境变量以及连接字符串CodePage 参数将代码页设置为1200、1208 或1252;没有改变错误消息
  • 已验证所有软件(DB2、DB2 DSDRIVER、.NET 提供程序)都是 v11.5
  • 已验证我可以使用db2cli.exe 连接和运行查询

现在呢? 有没有我可以/应该设置 DB2 服务器类型的地方?例如,z/OS 与 LUW?请注意,我没有使用 EntityFramework,只是直接在该 Connection 对象上执行命令(尽管错误出现在此之前)。

【问题讨论】:

标签: c# .net db2 db2-zos


【解决方案1】:

我们已经解决了这个问题。有两个更改要做,这肯定会使事情变得复杂。

  1. 我们确实需要将DB2CODEPAGE 环境变量设置为1208
  2. 我们使用CurrentSchema 连接字符串参数来为我们的SQL 查询设置前缀,但前缀不是实际的模式,即使设置了正确的代码页也会中断连接,并且没有有用的错误消息客户端。我们删除了该参数并手动设置 SQL 查询的表前缀。

进行这两项更改使应用程序正常工作。

连接到本地 Docker 实例已经成功,因为我已经为该前缀设置了一个实际架构,但没有意识到 prod 实例的配置不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多