Guten Morgen,
ich habe mir das Ganze noch einmal mit Euren Informationen angesehen.
Zuerst noch ein paar zusätzliche Informationen:
- es werden keine Daten in die Datenbank importiert und es ist auch nicht vorgesehen
- es ist nicht vorgesehen Daten aus der Datenbank zu exportieren und wenn, dann muss das nicht dokumentiert werden
- die Tabelle BtoB_Filiale ist nur ein Beispiel gewesen, da diese nicht so umfangreich und eher überschaubar für mich ist.
- bei dem "SELECT System_User" war ich von falschen Voraussetzungen ausgegangen, was sich aber durch Eure Hilfe klären lies
Ich habe jetzt dank Euch folgenden Ansatz gefunden, der sicherlich nicht optimal ist, aber für meine Zwecke ausreicht:
- ich werde die Mitarbeiter die die Daten erfassen und die mit der Datenbank arbeiten, am SQL Server als lokale Benutzer anlegen,
- ich werde die Verbindung zum SQL Server mit diesem Benutzer steuern, damit der Trigger den richtigen Mitarbeiter erkennen kann,
- ich werde versuchen, die ODBC Verbindung zum Server durch einen Connectionstring zu ersetzen, der automatisch den Mitarbeiter übergibt,
[CODE]
USE [Fahrwerk]
GO
/****** Object: Trigger [dbo].[Datum_Aenderung_Filiale] Script Date: 13.04.2025 08:21:44 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Name
-- Create date:
-- Description:
-- =============================================
CREATE TRIGGER [dbo].[Datum_Aenderung_Filiale]
ON [dbo].[BtoB_Filiale]
AFTER INSERT,UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Declare @Index int
set @index = (SELECT idx_Filiale from inserted)
-- Insert statements for trigger here
Update BtoB_Filiale
set BtoB_Filiale.Letzte_Aenderung = GETDATE(),
BtoB_Filiale.Aenderung_Durch=(SELECT SYSTEM_USER)
where BtoB_Filiale.idx_Filiale = @Index
END
[/CODE]
Dabei steht @Index für den PK des betreffenden Datensatzes.
Ich habe das jetzt mehrfach probiert (noch mit einem Benutzer, der in der ODBC Verbindung übergeben wurde) und das hat den gewünschten Erfolg gebracht.
Wie oben schon geschrieben, werde ich versuchen, die ODBC Verbindung durch einen Connection String zu ersetzten und den betreffenden User aus der Anmeldung mit übergeben. Der betreffende Anwendername weicht leider von dem Windows Benutzernamen ab, sonst hätte ich den nehmen können - Anmeldung an mehreren PCs mit dem gleichen Benutzernamen, aber unterschiedliche Datenbankbenutzer.
Noch einmal vielen Dank und ich bin für weitere Anregungen und Kommentare dankbar, da auch ich - nach über 20 Jahren Programmiererfahrung - immer noch eine Menge dazulernen kann, insbesondere was den SQL Server angeht.