Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

MS-SQL-Server: Trigger mit dynamischem SQL

Empfohlene Antworten

Veröffentlicht

Moin,

heute komme ich mal irgendwie nicht so richtig weiter. Es geht darum, dass ich Trigger für einige Tabellen brauche (ggf. ziemlich viele) die alle Änderungen protokollieren sollen.

Darum muss das so variabel wie möglich sein.


SET @SQL = 'DECLARE SPALTENCURSOR CURSOR FOR

		SELECT C.name 

		FROM	syscolumns C 

			INNER JOIN sysobjects O 

			ON C.id = O.id

		WHERE	O.name = N''' + @TABELLE + '''';

EXEC(@SQL);

OPEN SPALTENCURSOR;

FETCH NEXT FROM SPALTENCURSOR into @SPALTE;

WHILE @@FETCH_STATUS = 0

BEGIN

	SET @WERTNEU = 'Select ' + @SPALTE + ' from inserted';

	SET @WERTALT = 'Select ' + @SPALTE + ' from deleted';

--

-- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

-- das hier drüber geht so leider und vielleicht auch logischerweise nicht.

--

-- hier kommt dann irgendwann ein geniales Insert-Statement ins Protokoll

--

	FETCH NEXT FROM SPALTENCURSOR into @SPALTE;

END

CLOSE SPALTENCURSOR;

DEALLOCATE SPALTENCURSOR;

Kennt da jemand einen Trick? :confused::confused::confused::confused:

Reinhold

Wir haben auch auf so ziemlich allen Tabellen (ca. 250) Trigger. Allerdings generieren wir die ausserhalb der Datenbank während des Build Prozesses und spielen sie dann in die DB ein. Im Trigger irgendwas aus Systemviews dynamisch zu ermitteln ist viel zu unperformant.

Dim

Moin,

Im Trigger irgendwas aus Systemviews dynamisch zu ermitteln ist viel zu unperformant.

das sehe ich genau so, aber das Problem ist, dass ich die Spalten nicht weiss, genauer gesagt, die User können eigene Spalten anlegen, die dann logischerweise auch protokolliert werden müssen. Und ich befürchte, dass da sonst kein Mensch mehr die Trigger im Auge hat.

Hast du einen Tipp, wie es, wenn auch unperformant, gehen könnte?

Gruß

Reinhold

Die User können in Produktion selbst Spalten anlegen? An jeder Versionsverwaltung, Revision etc. vorbei? Ich würd mal sagen, das ist dann dein größtes Problem und sollte angegangen werden.

Ansonsten kann ich dir leider nicht weiterhelfen, da ich mit MSSQL (zum Glück :D) noch nie was machen musste.

Dim

Die User können in Produktion selbst Spalten anlegen? An jeder Versionsverwaltung, Revision etc. vorbei? Ich würd mal sagen, das ist dann dein größtes Problem und sollte angegangen werden.

Moin,

mag sein dass das ein Problem ist und mir ist auch nicht wirklich wohl dabei, Aber wie dem auch sei, diese Anwendung ist nicht von mir und von mir in dieser Hinsicht auch nicht beeinflussbar.

Ich werde also wohl damit leben müssen.

Danke für deine Hinweise.

Reinhold

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.