- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
(fund, -6ren">
在我们的生产环境中,我们有一个存储过程(在 sql 2005 server 中)将数据从远程存储过程(存储在远程 sql 2008 中)导入本地表。
代码是这样的:
insert <<local table name>> (fund, strat, clr, [id], position, unsettledPosition)
exec <<remote stored proc name>> 'aapl us' , '2013-05-13'
我收到此错误:
Cannot use SAVE TRANSACTION within a distributed transaction.
和
The current transaction cannot be committed and cannot support operations that write to the log file. Roll back the transaction.
我配置了本地和远程 DTC,允许 DTC 通过网络访问,允许远程客户端选项,还允许入站和出站通信,最后启用 XA 事务,但没有任何成功。
直到昨天,远程服务器还是旧的 SQL 2005,我的代码运行良好,然后我想我错过了新服务器 2008 中的一些配置设置。
有人能帮帮我吗?
最佳答案
这个错误很容易重现,打开 MSDTC:
BEGIN DISTRIBUTED TRANSACTION;
...
SAVE TRANSACTION abc;
根据 this link ,在分布式事务中使用 SAVEPOINT 的能力在 SQL 7 中被删除,即不是 SQL 2008 (R2) 中的重大更改。
您以前可能没有在分布式事务下运行,但现在是,例如以前,远程过程可能在同一台服务器上的不同数据库上,因此不需要 DTC 事务。
很遗憾,您似乎需要删除边界 ACID 事务,或者更改远程服务器上的 SPROC,使其不使用 SAVEPOINT。
更新根据下面的评论,似乎 REMOTE_PROC_TRANSACTIONS选项已在 OP 较新的 SQL 2008 服务器上设置,它会自动开始跨远程存储过程调用的分布式事务。
关于sql-server - 避免 SQL 2005 和 2008 之间的 "Cannot use SAVE TRANSACTION within a distributed transaction"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16546849/
我是一名优秀的程序员,十分优秀!