Fehlermeldung: Benutzer kann nicht in d.3 admin gelöscht werden (99996 D3_SERVER_UNKNOWN_STD_EXCEPTION)
Komponente | d.3 admin |
---|---|
Version | Current 2023.Q1, Annual 2022 |
Erstellt am |
|
Zuletzt geändert am | Thu, 04 Jan 2024 15:32:47 GMT |
Reviewstatus | Review: Approved (1/1) |
KB-Artikelnummer | 424182192 |
Zusammenfassung
Sie möchten in Ihrem d.3-Repository einen d.3-Benutzer löschen. Der d.3-Benutzer wird jedoch nicht gelöscht.
Im d.3 Log wird folgende Fehlermeldung angezeigt:
An object update affected more rows than it should!
Return code: 99996 (D3_SERVER_UNKNOWN_STD_EXCEPTION)
Der d.3-Benutzer hat in der Microsoft SQL Server-Datenbank keine gültige Objekt-ID. Sie müssen den d.3-Benutzer zunächst in der SQL Server-Datenbank löschen und danach in d.3 admin.
Wichtige Voraussetzungen
Sie haben administrativen Zugriff auf den d.3-Server mit d.3 admin und d.3 process manager.
Sie sind Datenbankadministrator in Microsoft SQL Server mit den Berechtigungen schreibende SQL-Anweisungen auszuführen.
Führen Sie vorab ein Backup der SQL Server-Datenbank aus, mindestens jedoch für die Datenbanktabelle sid_assign.
Lösung
Nachdem Sie eine Sicherung der SQL Server-Datenbank oder mindestens der Datenbanktabelle sid_assign ausgeführt haben, gehen Sie folgendermaßen vor:
Gehen Sie zum d.3-Server mit d.3 process manager (http://localhost:3480) und stoppen Sie die Prozesse.
Melden Sie sich bei der d.3-Datenbank an und stellen Sie eine Verbindung her, z.B. in Microsoft SQL Server Studio.
Führen Sie eine SELECT-Anweisung mit dem Benutzerkürzel des zu löschenden Benutzers aus. Standardmäßig sollte für alle Benutzer (auth_id) nach der Abfrage der Parameter object_id gleich NULL sein.
SQLSELECT * FROM sid_assign WHERE auth_id = '<user_shortname>'
Alle Datensätze, die in der Abfrage unter Ergebnisse leer sind, sind fehlerhaft. Die fehlerhaften Datensätze müssen Sie löschen (farblich hervorgehoben).
Leerer Eintrag bei “object_id” für d.3-Benutzer
Löschen Sie den fehlerhaften Benutzer aus der Datenbanktabelle mit folgender SQL-Anweisung:
SQLDELETE FROM sid_assign WHERE auth_id = '<user_shortname>' AND object_id IS NOT NULL;
Leeren Sie anschließend die Datenbanktabelle cache_state mit einer DELETE-Anweisung. Andernfalls bleiben die veralteten Werte im d.ecs jstore-Cache vorhanden, was zu Dateninkonsistenzen führen kann:
SQLDELETE FROM cache_state
Gehen Sie zum d.3-Server und starten Sie alle Prozesse in d.3 process manager (http://localhost:3480).
Löschen Sie den d.3-Benutzer in d.3 admin.