Jump to content

falcon68

Members
  • Gesamte Inhalte

    1
  • Registriert seit

  • Letzter Besuch

Letzte Besucher des Profils

Der "Letzte Profil-Besucher"-Block ist deaktiviert und wird anderen Benutzern nicht angezeit.

Fortschritt von falcon68

Newbie

Newbie (1/14)

  • Erster eigener Beitrag

Neueste Abzeichen

0

Reputation in der Community

  1. Hallo liebe Gemeinde, ich bin ein bisschen verzweifelt und evtl. hat jemand einen Tip was ich falsch mache. Motivation: Es soll ein LOGON Trigger geschrieben werden der neben Informationen zu Connects, Host, User u.s.w. auch die voreingestellten Optionen berichten soll. Das klappt auch alles, bis auf den Wert für die ausgelesene Umgebungsvariable @@OPTIONS. Diesen Wert brauche ich, um festzustellen, wie der Wert für IMPLICIT_TRANSACTION beim logon gesetzt ist und möchte den Wert dann auflösen. Da ich Neuling bin im MS SQL Server Umfeld bin, könnte es natürlich sein, dass das gar nicht geht und mein Ansatz falsch ist. Was habe ich gemacht: --------------------------------------- -- TEST --------------------------------------- /* Creates db for storing audit data */ CREATE DATABASE logonaudit go /* use the db */ USE logonaudit go /* Creates table for logons inside db */ CREATE TABLE logonauditings ( A_CONNECTIONS int, A_OPTIONS int, A_IMPLICIT_TRANSACTION varchar(32) ) GO /* creates the trigger */ CREATE or alter TRIGGER logonauditingtrigger ON ALL SERVER FOR LOGON AS begin declare @A_CONNECTIONS int, @A_OPTIONS int, @A_IMPLICIT_TRANSACTION varchar(32) = 'Hier steht entw. ON o. OFF' set @A_OPTIONS = @@OPTIONS; /* diese Interpretation geht schief da der INT Wert nicht korrekt scheint */ if ((@A_OPTIONS & 2) = 0) set @A_IMPLICIT_TRANSACTION = 'Implicit Transactions are OFF' ELSE set @A_IMPLICIT_TRANSACTION = 'Implicit Transactions are ON'; INSERT INTO logonaudit.dbo.logonauditings ( A_CONNECTIONS, A_OPTIONS, A_IMPLICIT_TRANSACTION ) values ( @@CONNECTIONS, @@OPTIONS, @A_IMPLICIT_TRANSACTION ) end go COMMIT; /* manuelle Analyse wenn man die Option umschaltet für implicit_transactions */ -- ON set implicit_transactions ON; select @@OPTIONS --> Ergebnis: 5498 -- OFF set implicit_transactions OFF; select @@OPTIONS --> Ergebnis: 5496 /* Nach dem neuen login in die datenbank audit tabelle abfragen also was wurde während des login geschrieben */ select * from logonaudit.dbo.logonauditings ; /* in der audit tabelle steht dann der Wert */ A_CONNECTIONS A_OPTIONS A_IMPLICIT_TRANSACTION 1975 22328 Implicit Transactions are ON /* clean up */ truncate table logonaudit.dbo.logonauditings ; Also im Wesentlichen geht es um die Frage: --------------------------------------------------- Warum wird bei manueller Abfrage der Variablen @@OPTIONS ein Wert 5496 oder 5498 angezeigt und wenn das über den Trigger läuft der Wert 22328. Das scheint das Vier-Fache zu sein, erschließt sich mir aber nicht wirklich. Bei der Anzahl der Connections ist ein Unterschied von nur 2 oder ähnlich. Ich würde mich sehr über Tips feuen. Herzliche Grüße F.
×
×
  • Neu erstellen...