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).
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.