使用4部分命名从SQL Server 2005插入到DB2?

问题描述:

我们在Linux和SQL Server 2005以及IBM db2 odbc驱动程序上使用DB2 9.1。我们有一个链接服务器设置为DB2。从SQL Server中,我能做到以下几点:使用4部分命名从SQL Server 2005插入到DB2?

-- I can create the new table fine 
exec ('create table dev.TestSylviaB (field1 int) in TS_DEV_USER_XXXX') 
at LinkDB2 

-- I can use 4 part naming to select from it, as long as I skip the second part and put everything in upper case 
select * from LINKDB2..DEV.TESTSYLVIAB 

-- I can insert using Exec (which does pass through) 
exec ('insert into DEV.TestSylviaB (field1) values (1)') at LinkDB2 

-- HOWEVER I cannot insert via the standard 4 part naming, like this: 
insert into LINKDB2..DEV.TESTSYLVIAB values (1) 

我得到一个 “驱动程序不支持” 错误消息:

OLE DB提供程序 “MSDASQL” 链接服务器 “LINKDB2” 返回了消息“[IBM] [CLI Driver] CLI0150E Driver not able。SQLSTATE = S1C00“。 Msg 7343,Level 16,State 2,Line 1 链接服务器“LINKDB2”的OLE DB提供程序“MSDASQL”无法插入表“[LINKDB2] .. [DEV]。[TESTSYLVIAB]”。

有什么想法?

谢谢! Sylvia

4部分名称插入是分布式事务,DB2驱动程序需要注册到它。见Registering the IBM DB2 Driver for ODBC and CLI with the Microsoft DTC

+0

谢谢你Remus!这看起来不错。我现在无法真正测试它,但我非常有希望。当我们真正实现它时,我会编辑它。 – Sylvia 2009-12-12 00:19:20