【问题标题】:Special characters from SQL Server Linked Server to IBM DB2从 SQL Server 链接服务器到 IBM DB2 的特殊字符
【发布时间】:2021-05-03 16:17:55
【问题描述】:

我对以下主题有一个不好的问题:我正在尝试将一些数据从 SQL Server 数据库迁移到 IBM DB2 数据库 (LUW v11.1)。为此,我使用了一个使用 DB2OLEDB 驱动程序的链接服务器。

所以,当我执行下面的语句时

insert into [MyDB].[MyDB76].[SCHEMA].TABLE (DESCRIPTION, ID)
SELECT N'a', ID FROM VW_TABLE
where TABLEID=35

一切正常,但如果我插入特殊字符,请将 "a" 替换为 "à"

insert into [MyDB].[MyDB76].[SCHEMA].TABLE (DESCRIPTION, ID)
SELECT N'à', ID FROM   VW_TABLE
where TABLEID=35

出现以下错误信息

链接服务器“MyDB”的 OLE DB 提供程序“DB2OLEDB”返回消息“发生内部网络库错误。发生网络级语法错误。SQLSTATE: HY000, SQLCODE: -379”。 消息 7343,第 16 层,状态 2,第 23 行 链接服务器“MyDB”的 OLE DB 提供程序“DB2OLEDB”无法插入表“[MyDB].[MyDB76].[SCHEMA].[TABLE]”。

我尝试“玩”链接服务器配置参数(请参见下文),但没有成功。

有人知道解决这个问题的技巧吗?

非常感谢

【问题讨论】:

  • sqlcode -379 状态 2,表示分布式事务提交失败,真正的原因将在 Db2 诊断中。您需要与 Db2 DBA 交谈以查看 Db2 诊断程序中的内容。您应该在问题中指定 Db2 服务器(z/os、i 系列、linux/unix/windows/cloud/zlinux)的哪个平台。此外,在这种情况下您为何启用分布式事务也不清楚。
  • 谢谢。我正在使用 DB2 LUW v11.1)
  • 当 -379 sqlcode 发生时,Db2 诊断中的内容是什么?
  • 您是如何创建此链接服务器的,我正在尝试使用“IBM DB2 ODBC 驱动程序 - DB2COPY1”创建此驱动程序,但它显示错误?
  • db2 中该表的模式是什么?

标签: sql sql-server db2 linked-server db2-luw


【解决方案1】:

你试过用sql server吗?

类似:

insert into openquery (DB2server, select col1, col2, col3 from your_table)

select col1, col2, replace(col3,'a','à') from your_sqlserver_table

【讨论】:

  • 我不想替换字符。事实上,“à”就是一个例子。我的记录中还有其他特殊字符,我无法全部替换。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-17
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多