请教OpenDataSource的问题

aruku 2006-10-20 11:39:03
我写了一个SQL语句,在查询分析器中运行是没有问题的。可是把它写到程序里面都出现问题了。


该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。 [OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ] OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。


应该怎样做才能解决呢?
...全文
117 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
aruku 2006-10-23
  • 打赏
  • 举报
回复
是要做两个数据库之间的连接查询。
这样的结构不能存放在存储结构之中。
winner2050 2006-10-20
  • 打赏
  • 举报
回复
查询语句还有代码都放上来
Knight94 2006-10-20
  • 打赏
  • 举报
回复
两个数据库之间数据做连接进行查询?

如果是的话,直接用ado.net执行好像是有问题的。
不过你这里用local是否有问题,如果sql语句发送到服务器端,那么需要在服务器端有相应的数据源。

如果这里没有问题的话,你可以把这些语句写成存储,然后只传递相应的参数进行执行试试。
woanon 2006-10-20
  • 打赏
  • 举报
回复
......干吗把 数据库连接直接写select里面........
Kyle_Yuan 2006-10-20
  • 打赏
  • 举报
回复
沒見過這樣做地,請高人 Knight94(愚翁)
來解決吧。

aruku 2006-10-20
  • 打赏
  • 举报
回复
select c.ID,b.Name
FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=(local);User ID=sa;Password=sa;DataBase=CallData'
).CallData.dbo.callrecord a
left outer join Project b on a.projectid=b.projectid
left outer join workno c on a.workno=right(c.id,4)
left outer join checkin d on c.id=d.pid
where datediff(day,d.activeday,@aDay)=0 and a.inserttime>=d.starttime1 and a.inserttime<=d.endtime1
group by c.id,b.name
order by c.id
vvresoft 2006-10-20
  • 打赏
  • 举报
回复
关注
Knight94 2006-10-20
  • 打赏
  • 举报
回复
sql语句贴出来

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧