我有一个宏大的一次包装几个交易到2个不同的数据库相同的SQL Server上。 我最初在和网络DTC访问麻烦,我解决了。 现在,我继续得到错误是“与底层事务管理器通信失败。”
我们在一个数据库中的一些客户档案,当这些配置文件已经过时,我们希望将其移动到存储的“存档”数据库。 此举仅仅是将其添加到归档数据库,并从主/活数据库中删除它们(幽默斜体)。 我对每个数据库一个DataContext。 下面的代码进行添加,然后试图用第二的DataContext时得到的删除错误。 我只一直在与LINQ几个月,我已经冲刷了过去几天的文章。 我想知道如果有什么错我的代码或如果还有什么不与DTC或适当配置???
我们在VMware上运行我的工作站和服务器。 - 工作站是Windows 7的SP1 - 服务器是Windows和SQL Server 2008R2
常规的“移动”:
private int MoveProfileToArchiveDB( int iProfileId )
{
int rc = RC.UnknownError;
// get new Archive profile object
ProfileArchive.ProfileInfo piArchive = new ProfileArchive.ProfileInfo();
// 'Live' DataContext
using ( ProfileDataContext dbLive = new ProfileDataContext() )
{
// get Live profile
ProfileInfo piLive = ProfileInfo.GetProfile( dbLive, iProfileId );
// copy Live data to Archive profile object... including the id
ProfileArchive.ProfileInfo.CopyFromLive( piLive, piArchive, true );
}
bool bArchiveProfileExists = ProfileArchive.ProfileInfo.ProfileExists( piArchive.id );
// make the move a transaction...
using ( TransactionScope ts = new TransactionScope() )
{
// Add/Update to Archive db
using ( ProfileArchiveDataContext dbArchive = new ProfileArchiveDataContext() )
{
// if this profile already exists in the Archive db...
if ( bArchiveProfileExists )
{
// update the personal profile in Archive db
rc = ProfileArchive.ProfileInfo.UpdateProfile( dbArchive, piArchive );
}
else
{
// add this personal profile to the archive db
int iArchiveId = 0;
piArchive.ArchiveDate = DateTime.Now;
rc = ProfileArchive.ProfileInfo.AddProfile( dbArchive, piArchive, ref iArchiveId );
}
// if Add/Update was successful...
if ( rc == RC.Success )
{
// Delete from the Live db
using ( ProfileDataContext dbLive = new ProfileDataContext() )
{
// delete the personal profile from the Profile DB
rc = ProfileInfo.DeleteProfileExecCmd( dbLive, iProfileId ); // *** ERROR HERE ***
if ( rc == RC.Success )
{
// Transaction End (completed)
ts.Complete();
}
}
}
}
}
return rc;
}
笔记:
- 我有删除,他们都在外面的TransactionScope工作几种不同的方法。
- ProfileInfo是主个人资料表,大致是两个Live和归档数据库相同。
任何帮助是极大的赞赏! 非常感谢...