sql事务
2005-04-19 11:20
162 查看
原因
这是设计使然。如果在"本地系统"帐户下运行"分布式事务处理协调器服务"就会发生此错误。返回页首 |
解决方案
最近为了提高 RPC 安全性对 DTC 所做的更改要求 MSDTC 作为"NT Authority/NetworkService"运行。这是 .NET Server 的默认选项。在 Windows NT 和 Windows 2000 中,默认情况下 MSDTC 服务是在"本地系统"帐户下运行的。警告:"注册表编辑器"使用不当可造成严重问题,这些问题可能需要重新安装操作系统。Microsoft 不保证能够解决因为"注册表编辑器"使用不当而产生的问题。使用"注册表编辑器"需要您自担风险。
若要将 MSDTC 服务帐户从"本地系统"更改为"NT Authority/NetworkService",请执行下列步骤:
1. | 运行 regedt32,浏览至 HKEY_LOCAL_MACHINE/Software/Microsoft/MSDTC。 添加一个 DWORD 值 TurnOffRpcSecurity,值数据为 1。 | ||||||||||||||
2. | 打开命令提示,运行"net stop msdtc",然后运行"net start msdtc"。 | ||||||||||||||
3. | 转至"组件服务管理工具"。
| ||||||||||||||
4. | 再次运行 regedt32,浏览至 HKEY_LOCAL_MACHINE/Software/Microsoft/MSDTC,然后删除 TurnOffRpcSecurity 项。 |
返回页首 |
更多信息
当"MSDTC 安全性"配置下的"网络 DTC 访问"禁用时,如果运行链接服务器查询则会返回下列错误:Server:Msg 7391, Level 16, State 1, Line 2 The operation could not be performed because the OLE DB provider 'SQLOLEDB' was unable to begin a distributed transaction.[OLE/DB provider returned message:New transaction cannot enlist in the specified transaction coordinator.]
跟踪标记 7300 打开时: Server:Msg 7391, Level 16, State 1, Line 2 The operation could not be performed because the OLE DB provider 'SQLOLEDB' was unable to begin a distributed transaction.[OLE/DB provider returned message:New transaction cannot enlist in the specified transaction coordinator.] OLE DB error trace [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a].MSDTC 服务一定要按照上面"解决方案"一节中的说明进行设置,才能防止此错误。
再现现象的步骤
1. | 转至"启动管理工具服务"。 |
2. | 右键单击"分布式事务处理协调器"服务,转至"登录"选项卡,选择"登录身份"下的"本地系统"帐户。 |
3. | 停止然后重新启动该服务。 |
4. | 从查询分析器,运行下列脚本: exec sp_addlinkedserver remote1 exec sp_setnetname remote1, <remote server name> go exec remote1.pubs.dbo.sp_executesql N'create table t (c1 int)' go set xact_abort on go begin tran insert into remote1.pubs.dbo.t values (1) commit tran go |
返回页首 |
相关文章推荐
- 实现数据库事务的简单方法ExecuteSqlTran()
- Linq to sql(七):并发与事务
- 一步一步学Linq to sql(七):并发与事务
- 一个jdbc的例子(包含sql语句的批处理,事务处理,数据绑定prepare)
- 步步为营VS 2008 + .NET 3.5(12) - DLINQ(LINQ to SQL)之事务处理和并发处理
- html5 本地数据库(Web SQL Database)之事务处理函数 transaction和executeSQL 详解
- Linq to SQL之使用事务
- 使用事务处理SQL数据时,遇到Exception:The transaction manager has disabled its support for remote/network transactions
- mysql里的批处理(sql语句)、触发器、事务管理、存储过程
- SQL 事务与并发
- 利用游标循环进行更新插入的SQL事务语句
- sql事务分析,规范
- 黑马程序员之ADO.NET学习笔记: SqlTransaction(事务)
- sql service 事务与锁
- SqlBulkCopy加了事务真的会变快吗?
- SQL事务实例
- Java 的 SQL 事务处理
- 创建数据库、表、主外键、各种约束、存储过程、视图、索引、事务使用、触发器、创建登录账号、数据库用户 Sql语句示例