BC14.8 Daten über eine Sicht löschen

23. Dezember 2020 13:26

Hallo Zusammen,

ich habe in eine BC 14.8 DB eine Sicht eingebunden, die auf eine Tabelle in einer NAV 4.03 anzeigt. Da die beiden Datenbanken auf verschiedenen SQL-Servern liegen, wegen den verschiedenen SQL Versionen ( SQL2012, SQL 2019) wurde auch ein entsprechender Verbindungsserver eingerichtet.

Auf die Sicht kann ich lesend zugreifen.
Nachdem die Daten aus der Sicht gelesen wurden, sollen die Daten gelöscht werden. Somit erfolgt ein DELETEALL auf die Sicht.

Dabei kommt folgender Fehler:

"Der folgende SQL-Fehler war nicht erwartet: Für den OLE DB-Anbieter "SQLNCL11" für den Verbindungserver "Servername" konnte keine geschachtelte Transaktion gestartet werden. Eine geschachtete Transaktion war erforderlich, da die Option XACT_ABORT auf OFF festgelegt war. Der OLE DB-Anbieter "SQLNCL11" für den Verbindungsserver "Servername" hat die Meldung es können keine weitere Transaktionen in dieser Sitzung gestartet werden" zurückgegeben.



Früher wahr diese View in einer NAV 6.00 und beide DBs waren auf den selben SQS(2012) Server. Da konnte mach den Löschvorgang über die View an die Tabelle weitergeben.

Mit freundlichen Grüßen

Jürgen Hommert

Re: BC14.8 Daten über eine Sicht löschen

23. Dezember 2020 15:25

Also mit BC hat das nichts zu tun - da wäre ggf. ein SQL-Server-Forum hilfreicher.
Wir kennen auch deinen Code nicht, der ausgeführt wird.
Trotzdem hier mal der Versuch der Hilfestellung
https://docs.microsoft.com/de-de/sql/t-sql/statements/set-xact-abort-transact-sql?view=sql-server-ver15

https://stackoverflow.com/questions/1150032/what-is-the-benefit-of-using-set-xact-abort-on-in-a-stored-procedure

Re: BC14.8 Daten über eine Sicht löschen

4. Januar 2021 11:24

Der Code ist:

View.deleteall.

Die Links sind schon der richtige Ansatz, nur ist mir nicht klar wie ich die einsetze.

Die gespeicherte Procedure anlegen bekomme ich schon hin,
nur wo muss diese angelegt werden?
Auf den Server wo die View ist oder wo die Tabelle ist und die gespeicherte Procedure muss
dann ja noch ausgeführt werden, oder?