无法执行该操作,因为链接服务器 "XXXXX" 的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务。

ivan__zhang 2008-02-29 02:19:43


Database db = DatabaseFactory.CreateDatabase("Connectstring");
DbCommand dbcom = db.GetStoredProcCommand("UP_Report_InComeDetail");
db.AddInParameter(dbcom, "@Condition", DbType.String, strSQL);
db.AddInParameter(dbcom, "@TheDate", DbType.DateTime,CtrlCalendar1.Value);
DataSet ds = db.ExecuteDataSet(dbcom);
ds.Tables[0].Columns.Add("PromProfit",typeof(string));
ds.Tables[0].Columns.Add("AchieveNum", typeof(string));

DbCommand dbcom1 = db.GetStoredProcCommand("UP_Report_BonusByCity");
db.AddInParameter(dbcom1, "@Condition", DbType.String, strSQL);
db.AddInParameter(dbcom1, "@TheDate", DbType.DateTime, CtrlCalendar1.Value);
DataSet ds1 = db.ExecuteDataSet(dbcom1);

foreach (DataRow row in ds.Tables[0].Rows)
{
row["PromProfit"] = this.GetValue(row["OnlyToCity"].ToString(),ds1,out num);
row["AchieveNum"] = num;
}

MyList.DataSource = ds;
MyList.DataBind();

这样的程序报"无法执行该操作,因为链接服务器 "XXXXX" 的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务。"错误
这是什么原因,如何解决啊
...全文
1828 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
onehalf 2012-08-15
  • 打赏
  • 举报
回复
buhuifukanbudao
benben_tong 2011-11-11
  • 打赏
  • 举报
回复
看一下MSDTC啟動是否正確



1、运行 regedt32,浏览至 HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC。
添加一个 DWORD 值 TurnOffRpcSecurity,值数据为 1。
2、重启MS DTC服务。
3、打开“管理工具”的“组件服务”。
a. 浏览至"启动管理工具"。
b. 选择"组件服务"。
c. 展开"组件服务"树,然后展开"我的电脑"。
d. 右键单击"我的电脑",然后选择"属性"。
在 MSDTC 选项卡中,确保选中了下列选项:
网络 DTC 访问
网络管理
网络事务
XA 事务
另外,"DTC 登录帐户"一定要设置为"NT Authority\NetworkService"。
4、重启MS DTC服务。
5、再次运行 regedt32,浏览至 HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC,然后删除 TurnOffRpcSecurity 项。在查看一下sp_serveroption命令有鏈接服務器的選項說明

试试这个呢?
benben_tong 2011-11-11
  • 打赏
  • 举报
回复
看一下MSDTC啟動是否正確



1、运行 regedt32,浏览至 HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC。
添加一个 DWORD 值 TurnOffRpcSecurity,值数据为 1。
2、重启MS DTC服务。
3、打开“管理工具”的“组件服务”。
a. 浏览至"启动管理工具"。
b. 选择"组件服务"。
c. 展开"组件服务"树,然后展开"我的电脑"。
d. 右键单击"我的电脑",然后选择"属性"。
在 MSDTC 选项卡中,确保选中了下列选项:
网络 DTC 访问
网络管理
网络事务
XA 事务
另外,"DTC 登录帐户"一定要设置为"NT Authority\NetworkService"。
4、重启MS DTC服务。
5、再次运行 regedt32,浏览至 HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC,然后删除 TurnOffRpcSecurity 项。在查看一下sp_serveroption命令有鏈接服務器的選項說明

ivan__zhang 2008-02-29
  • 打赏
  • 举报
回复
已经试过了,没用。
wxg22526451 2008-02-29
  • 打赏
  • 举报
回复
http://tech.it168.com/KnowledgeBase/Articles/a/7/9/a79627f194af032d352db136dcf9835e.htm
ivan__zhang 2008-02-29
  • 打赏
  • 举报
回复
以下是出错时报的错误信息提示:

[SqlException (0x80131904): 无法执行该操作,因为链接服务器 "XXXXXX" 的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务。]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +862234
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +739110
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +188
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +1956
System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +31
System.Data.SqlClient.SqlDataReader.get_MetaData() +62
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +297
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +903
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +132
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +32
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +122
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +12
System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) +7
System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +141
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +137
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) +86
Microsoft.Practices.EnterpriseLibrary.Data.Database.DoLoadDataSet(DbCommand command, DataSet dataSet, String[] tableNames) +711
Microsoft.Practices.EnterpriseLibrary.Data.Database.LoadDataSet(DbCommand command, DataSet dataSet, String[] tableNames) +97
Microsoft.Practices.EnterpriseLibrary.Data.Database.LoadDataSet(DbCommand command, DataSet dataSet, String tableName) +68
Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteDataSet(DbCommand command) +94
ProductReport_InComeDetail.LoadData() +383
ProductReport_InComeDetail.Page_Load(Object sender, EventArgs e) +96
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +34
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +47
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1061

110,538

社区成员

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

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

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