TransactionScope可以在同一个Microsoft SQL服务器上的2个数据库中使用吗?

时间:2013-02-08 13:49:26

标签: .net sql-server transactionscope

我遇到的情况是,当我更新用户时,我还必须跟踪对用户所做的所有更改 - 有点像用户表的活动日志。此活动日志位于同一数据库服务器上的其他数据库中。但是当我在事务范围中包装这两个DB调用时,我得到一个错误。

所以我想知道是否有办法绕过/解决这个问题?

4 个答案:

答案 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秒不间断地读取日志数据库