Hallo zusammen,
ich habe einen Trigger der erfolgreich täglich Millionen von Daten in unterschiedliche Datenbanken und Tabellen einträgt.
Jetzt würde ich gerne eine Prüfung einbauen, die bei nicht existierenden Datenbanken und Tabellen diese automatisch
erstellt.
Ich verwende aktuell den MS SQL Server 2014.
Ziel ist es den Eingangsstring "[datenbankname].[dbo].[tabelle]" entsprechend zu zerlegen
und die DB und Tabelle auf existens zu prüfen, wobei die Performance nicht so sehr leiden sollte,
deshalb auch erst eine Prüfung wenn der INSERT fehl schlägt.
Beispiel:
Wie ihr seht brauche ich hier leider noch viel Hilfe...
Vielen Dank für Eure Hilfe.
Liebe Grüße
Florian
ich habe einen Trigger der erfolgreich täglich Millionen von Daten in unterschiedliche Datenbanken und Tabellen einträgt.
Jetzt würde ich gerne eine Prüfung einbauen, die bei nicht existierenden Datenbanken und Tabellen diese automatisch
erstellt.
Ich verwende aktuell den MS SQL Server 2014.
Ziel ist es den Eingangsstring "[datenbankname].[dbo].[tabelle]" entsprechend zu zerlegen
und die DB und Tabelle auf existens zu prüfen, wobei die Performance nicht so sehr leiden sollte,
deshalb auch erst eine Prüfung wenn der INSERT fehl schlägt.
Beispiel:
Code:
INSTEAD OF INSERT AS DECLARE @wert float DECLARE @utczeit datetime DECLARE @table nvarchar(4000) DECLARE @table2 nvarchar(4000) DECLARE @quality bit SELECT @wert=LoggingValue, @quality=Quality, @utczeit=UTCTime, @table=LoggingTable, @table2=LTW_Table FROM INSERTED DECLARE @str nvarchar(4000) BEGIN SET @str='INSERT INTO '+@table+' (LoggingValue,LoggingValue2,UTCTime,LoggingQuality) VALUES (@wert,NULL,@utczeit,@quality)' EXEC sp_executesql @str, N'@utczeit datetime, @wert float, @quality bit', @utczeit, @wert, @quality Hier mein Gedanke IF EXEC == false BEGIN Das Zerlegen habe ich bisher leider noch nicht hinbekommen @dbtable = STRING_SPLIT(@table,'].[') @newdb = STRING_SPLIT(@dbtable[0],'[')[1] @newtable = STRING_SPLIT(@dbtable[2],']')[0] IF NOT EXISTS (SELECT 1 FROM sys.databases WHERE name = @dbtable) BEGIN CREATE DATABASE [DBNAME] END und das Gleiche mit der Tabelle, danach nochmal der INSERT von oben. END END
Vielen Dank für Eure Hilfe.
Liebe Grüße
Florian
Kommentar