Frage

Da wir nicht implementieren die Nutzer unserer Anwendungen als Benutzer in SQL Server, wenn der Anwendungsserver mit einer Datenbank verbindet jede Anwendung immer die gleichen Anmeldeinformationen verwendet, um jede Datenbank zu verbinden.

Dies stellt ein Revisions Problem. Mit Trigger, wollen wir jedes Update speichern, Einfügen und Löschen und Attribut jeweils auf einen bestimmten Benutzer. Eine mögliche Lösung ist es, eine „aktualisierte Benutzer“ -Spalte zu jeder Tabelle hinzufügen und aktualisieren Sie diese jedes Mal. Das bedeutet, eine neue Spalte auf jedem Tisch und einen neuen Parameter auf jeder gespeicherten Prozedur. Es bedeutet auch, können Sie nur weiche Löschungen tun.

Statt dem schlage ich vor, mit der Anwendungsname-Eigenschaft der Verbindungszeichenfolge und dies innerhalb des Trigger mit der app_name () Eigenschaft zu lesen. Getestet habe ich diese mit einer einfachen App und es scheint zu funktionieren (das Format könnte wie so: App = MyApp | User = 100).

Die Frage für sie ist, ist dies eine schlechte Idee und haben Sie einen besseren?

War es hilfreich?

Lösung

Ich benutze CONTEXT_INFO für diesen Satz. Es ist genau das, was Sie brauchen.

Andere Tipps

Es scheint sicher, wie eine mögliche Lösung, obwohl man jedes Mal den Benutzernamen in der Verbindungszeichenfolge zu injizieren benötigen Ihre Anwendung geladen wird. Beachten Sie, dass diese Lösung wahrscheinlich nicht mit einer Web-Anwendung arbeiten, da der Verbindungszeichenfolge jedes Mal anders sein wird, die zu großen Verbindungspooling Problemen führen könnten.

Eine weitere Option ist der Hostname / IP-Adresse (SELECT host_name ()) und Speicher abzurufen, statt.

Du würde nicht unbedingt einen neuen Parameter für jede gespeicherte Prozedur benötigen, wie Sie jede gespeicherte Prozedur ändern können (oder den Auslöser), um den app_name / Hostnamen automatisch eingefügt werden.

Ein möglicher Nachteil ist, dass alle Änderungen über Management Studio ausgeführt werden die benutzerdefinierte app_name nicht haben, und Sie werden mit „Microsoft Management Studio“ als der Benutzer überlassen werden.

Wir verwenden die Application Namen Eigenschaft Revisions Trigger zu steuern und haben keine Probleme mit ihm gesehen, und haben keine Geschwindigkeitsprobleme nicht bemerkt (obwohl in unserem Fall sind wir speziell für bestimmte Anwendungen nicht die Prüfung, so ist es schwer zu messen, wie viel Zeit nicht etwas zu tun, nimmt:))

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top