我遇到的情况是,当我更新用户时,我还必须跟踪对用户所做的所有更改 - 有点像用户表的活动日志。此活动日志位于同一数据库服务器上的其他数据库中。但是当我在事务范围中包装这两个DB调用时,我得到一个错误。
所以我想知道是否有办法绕过/解决这个问题?
答案 0 :(得分:2)
谨慎分享错误所说的内容?无论如何,这个用例应该由TransactionScope支持。据我所知,虽然事务将被提升为分布式事务,并且需要Distrbuted Transaction Coordinator 要在您的计算机上安装并运行的服务(MSDTC)
编辑:看到错误消息,似乎2个数据库位于不同的机器上,因此分布式事务需要通过网络完成/同步。这意味着已安装MSDTC但未针对此用例正确配置。在文档中查找并与您的系统管理员聊天。答案 1 :(得分:1)
如果您使用的是SQL Server 2008,则可以在没有MSDTC的事务范围内将连接包装到相同的 SQL Server,前提是您为每个连接使用相同的连接字符串。
要使用相同的连接字符串,您需要在查询中明确指定数据库名称(至少一个数据库),例如
SELECT ... FROM db1..Table1 ...
SELECT ... FROM db2..Table2 ...
答案 2 :(得分:0)
您需要确保已安装和配置MSDTC。通过配置,我的意思是你需要启用网络DTC访问。
这可以帮助您入门:http://technet.microsoft.com/en-us/library/cc753866(v=ws.10).aspx
答案 3 :(得分:-3)
我不相信这是可能的,因为事务只与一个连接相关联。实现此行为需要的是拥有并行过程(即并发线程),每隔n秒不间断地读取日志数据库