if (select top 1 0 from sys.databases where name = 'NucelarMonitor') is null create database NucelarMonitor collate Latin1_General_100_CI_AS_SC_UTF8 go use NucelarMonitor if object_id(N'dbo.set_exception', N'P') is not null drop procedure dbo.set_exception go create procedure dbo.set_exception @database varchar(64), @procedure varchar(64), @message varchar(128), @parameters varchar(max) = null as begin set nocount on declare @procedure_id integer declare @message_id integer declare @exception_message varchar(max) = error_message() declare @exception_message_id integer declare @parameters_id integer execute dbo.get_procedure @database, @procedure, @procedure_id output execute dbo.get_big_data @exception_message, @exception_message_id output execute dbo.get_big_data @parameters, @parameters_id output execute dbo.get_message @message, @message_id output insert into dbo.Exceptions([procedure], [message], [parameters], exception, [status], code) values (@procedure_id, @message_id, @parameters_id, @exception_message_id, error_severity(), error_number()) end go if object_id(N'dbo.set_machine_data', N'P') is not null drop procedure dbo.set_machine_data go create procedure dbo.set_machine_data @key varchar(32), @candle_start datetime, @candle_end datetime, @candle_interations integer, @ram_total bigint, @ram_in bigint, @ram_out bigint, @ram_minimum bigint, @ram_maximum bigint, @ram_average bigint, @cpu_in float, @cpu_out float, @cpu_minimum float, @cpu_maximum float, @cpu_average float as begin set nocount on declare @machine_id integer declare @candle_time_id integer declare @machine_ram_id integer declare @machine_cpu_id integer execute dbo.get_basic_data_ids @key, @candle_start, @candle_end, @candle_interations, @machine_id output, @candle_time_id output insert into dbo.MachineRAM(machine, candle_time, total, [in], [out], minimum, maximum, average) values (@machine_id, @candle_time_id, @ram_total, @ram_in, @ram_out, @ram_minimum, @ram_maximum, @ram_average) set @machine_ram_id = scope_identity() insert into dbo.MachineCPU(machine, candle_time, [in], [out], minimum, maximum, average) values (@machine_id, @candle_time_id, @cpu_in, @cpu_out, @cpu_minimum, @cpu_maximum, @cpu_average) set @machine_cpu_id = scope_identity() if (select top 1 id from dbo.MachinePlain where date_out is null and machine = @machine_id ) is null insert into dbo.MachinePlain([key], machine, candle_time, machine_ram, machine_cpu, ram_total, ram_in, ram_out, ram_minimum, ram_maximum, ram_average, cpu_in, cpu_out, cpu_minimum, cpu_maximum, cpu_average) values (@key, @machine_id, @candle_time_id, @machine_ram_id, @machine_cpu_id, @ram_total, @ram_in, @ram_out, @ram_minimum, @ram_maximum, @ram_average, @cpu_in, @cpu_out, @cpu_minimum, @cpu_maximum, @cpu_average) else update dbo.MachinePlain set candle_time = @candle_time_id, machine_ram = @machine_ram_id, machine_cpu = @machine_cpu_id, ram_total = @ram_total, ram_in = @ram_in, ram_out = @ram_out, ram_minimum = @ram_minimum, ram_maximum = @ram_maximum, ram_average = @ram_average, cpu_in = @cpu_in, cpu_out = @cpu_out, cpu_minimum = @cpu_minimum, cpu_maximum = @cpu_maximum, cpu_average = @cpu_average where date_out is null and [key] = @key end go if object_id(N'dbo.set_machine_interface_data', N'P') is not null drop procedure dbo.set_machine_interface_data go create procedure dbo.set_machine_interface_data @key varchar(32), @name varchar(32), @is_ipv6 bit, @address varchar(45), @mask tinyint, @mounted bit, @id integer output as begin set nocount on declare @machine_id integer declare @interface_id integer declare @plain_id integer execute dbo.get_interface @name, @interface_id output execute dbo.get_machine @key, @machine_id output set @plain_id = (select top 1 id from dbo.MachinePlain where date_out is null and machine = @machine_id) set @id = ( select top 1 id from dbo.MachineInterfaces where date_out is null and machine = @machine_id and [interface] = @interface_id ) if @id is null begin insert into dbo.MachineInterfaces(machine, [interface], mounted, is_ipv6, [address], mask) values (@machine_id, @interface_id, @mounted, @is_ipv6, @address, @mask) set @id = scope_identity() insert into dbo.MachineInterfacesPlain(plain, machine, [interface], machine_interface, mounted, is_ipv6, [address], mask) values (@plain_id, @machine_id, @interface_id, @id, @mounted, @is_ipv6, @address, @mask) end else if ( select top 1 0 from dbo.MachineInterfaces where id = @id and mounted = @mounted and is_ipv6 = @is_ipv6 and [address] = @address and mask = @mask ) is null begin insert into dbo.MachineInterfaces(machine, [interface], mounted, is_ipv6, [address], mask) values (@machine_id, @interface_id, @mounted, @is_ipv6, @address, @mask) set @id = scope_identity() update dbo.MachineInterfacesPlain set machine_interface = @id, mounted = @mounted, is_ipv6 = @is_ipv6, [address] = @address, mask = @mask where date_out is null and plain = @plain_id and [interface] = @interface_id end end go if object_id(N'dbo.set_machine_interface_traffic', N'P') is not null drop procedure dbo.set_machine_interface_traffic go create procedure dbo.set_machine_interface_traffic @id integer, @type varchar(32), @candle_start datetime, @candle_end datetime, @candle_interations integer, @bytes bigint, @packages integer, @errors integer as begin set nocount on declare @type_id integer declare @candle_time_id integer declare @plain_id integer execute dbo.get_type @type, @type_id output execute dbo.get_candle_time @candle_start, @candle_end, @candle_interations, @candle_time_id output set @plain_id = (select top 1 id from dbo.MachineInterfacesPlain where date_out is null and machine_interface = @id) insert into dbo.MachineInterfacesTraffic(machine_interface, [type], candle_time, bytes, packages, errors) values (@id, @type_id, @candle_time_id, @bytes, @packages, @errors) if (select top 1 0 from dbo.MachineInterfacesTrafficPlain where date_out is null and plain = @plain_id and [type] = @type_id and candle_time = @candle_time_id ) is null insert into dbo.MachineInterfacesTrafficPlain(plain, candle_time, [type], bytes, packages, errors) values (@plain_id, @candle_time_id, @type_id, @bytes, @packages, @errors) else update dbo.MachineInterfacesTrafficPlain set bytes = @bytes, packages = @packages, errors = @errors where date_out is null and plain = @plain_id and [type] = @type_id and candle_time = @candle_time_id end go