Ich habe die folgenden Fehler Ausführung dieses Stückes Code, eine verteilte Transaktion mit Entiy Framework beginnen:kann nicht
private bool _updateList(SysInfo _sysInfo, List<pList> _pList)
{
try
{
foreach (var p in _pList)
{
_context.spUpdatePListApprovalFlow(p.countryID, _sysInfo.User.JobRoleID, p.src, p.id, p.status, _sysInfo.User.Username);
}
return true;
}
catch (Exception ex) //debug only
{
throw; //throws error to the main try catch
}
}
ERROR
Der Betrieb nicht, da OLE DB durchgeführt werden kann Der Provider "MSDASQL" für den Verbindungsserver "AS400_LINKEDSRV" konnte keine verteilte Transaktion starten.
jedoch alles funktioniert gut, wenn ich die gespeicherte Prozedur in SQL Management Studio:
exec [dbo].[spUpdatePListApprovalFlow]
@CountryID = 123456,
@UserTypeID = 23456,
@Src = 1,
@Id = '123456789',
@Status = 30,
@Username = 'username'
Ich bin müde nach einer Antwort von Graben nichts funktioniert ... Ein paar Dinge, die ich versucht habe:
- SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
- Einsatz mehrere Transaktionen in der gespeicherten Prozedur
Dieser SP hat 2 unterlagerte Prozeduren. Eine, die in eine Tabelle der Anwendungsdatenbank schreibt, und eine, die eine Tabelle in as400 aktualisiert.
Ich bin nicht DBA, ich habe Admin-Berechtigungen in meiner DB nur. Wird dies jedoch das Problem lösen? Können Sie mir bitte erklären, was das bedeutet, wenn Sie das ausschalten? Wenn nötig, kann ich sie bitten, dies zu tun. – bmvr
Dies ändert die Einstellungen des Verbindungsservers 'AS400_LINKEDSRV' in Ihrer SQL Server-Instanz. Es berührt nicht den entfernten AS400-Server. –
Wenn verteilte Transaktionen aktiviert sind, wenn alles konfiguriert und funktionsfähig ist, erstreckt sich die Transaktion über beide Server hinweg, als wäre es ein einzelner Server. Wenn die Transaktion nicht verteilt wird, ist Ihr SQL Server dafür verantwortlich, nur lokale Änderungen in eine Transaktion zu übernehmen, und der entfernte Server ist für seine eigenen Änderungen verantwortlich. Es ist möglich, dass Änderungen an einem Server beibehalten werden und sich nicht auf einem anderen Server ändern. Ob dies in Ihrem Fall akzeptabel ist, hängt davon ab, was Ihre gespeicherten Prozeduren tun. –