create database srgprs go use srgprs GO /****** Object: Table [dbo].[tmp_sync] Script Date: 08/26/2010 00:41:02 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tmp_sync]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[tmp_sync]( [veiculo] [int] NULL, [datetime] [datetime] NULL ) ON [PRIMARY] END GO /****** Object: StoredProcedure [dbo].[ProcP3] Script Date: 08/26/2010 00:40:37 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ProcP3]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N'create PROCEDURE [dbo].[ProcP3] -- Add the parameters for the stored procedure here @provaID varchar(10), @cnnStr nvarchar(200) AS BEGIN SET NOCOUNT ON; declare @delCmd varchar (max); declare @str varchar(max); select @str = ''SELECT destino, comando FROM Pendente where destino not like ''''''''+%'''''''' and provaid='' + @provaID ; select @delCmd = ''delete FROM Pendente where destino not like ''''''''+%'''''''' and provaid='' + @provaID ; exec (''INSERT into pendente Select * from OPENROWSET(''''SQLNCLI'''','''''' + @cnnStr + '''''','''''' + @str + '''''') AS a;'') exec (''delete from OPENROWSET(''''SQLNCLI'''','''''' + @cnnStr + '''''','''''' + @str + '''''');'') END ' END GO /****** Object: Table [dbo].[ParticipacaoProva] Script Date: 08/26/2010 00:40:42 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ParticipacaoProva]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[ParticipacaoProva]( [PilotoID] [int] NULL, [EquipaID] [int] NULL, [SafetyBoxID] [int] NULL, [VeiculoID] [int] NOT NULL, [ProvaID] [int] NOT NULL, [estadoParticipacaoID] [int] NOT NULL, [unitid] [varchar](20) NOT NULL ) ON [PRIMARY] END GO SET ANSI_PADDING OFF GO /****** Object: Table [dbo].[tmp_sync_rotagps] Script Date: 08/26/2010 00:41:03 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tmp_sync_rotagps]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[tmp_sync_rotagps]( [veiculo] [int] NULL, [datetime] [datetime] NULL ) ON [PRIMARY] END GO /****** Object: Table [dbo].[Pendente] Script Date: 08/26/2010 00:40:44 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Pendente]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[Pendente]( [id] [bigint] IDENTITY(1,1) NOT NULL, [unitid] [varchar](50) NOT NULL, [command] [varchar](300) NULL, CONSTRAINT [PK_Pendente] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] END GO SET ANSI_PADDING OFF GO /****** Object: Table [dbo].[RotaHistorico] Script Date: 08/26/2010 00:41:00 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[RotaHistorico]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[RotaHistorico]( [ID] [int] IDENTITY(1,1) NOT NULL, [UnitID] [bigint] NOT NULL, [data] [datetime] NOT NULL, [latitude] [float] NOT NULL, [longitude] [float] NOT NULL, [velocidade] [int] NOT NULL, [rumo] [int] NOT NULL, [altitude] [float] NOT NULL, [satelites] [int] NOT NULL, [inputs] [int] NULL, [outputs] [int] NULL, [customInput_1] [int] NULL, [customInput_2] [int] NULL, [razaoSMSID] [int] NOT NULL, CONSTRAINT [PK_RotaHistorico] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] END GO /****** Object: Table [dbo].[Rota] Script Date: 08/26/2010 00:40:53 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Rota]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[Rota]( [ID] [int] IDENTITY(1,1) NOT NULL, [UnitID] [bigint] NOT NULL, [data] [datetime] NOT NULL, [latitude] [float] NOT NULL, [longitude] [float] NOT NULL, [velocidade] [int] NOT NULL, [rumo] [int] NOT NULL, [altitude] [float] NOT NULL, [satelites] [int] NOT NULL, [inputs] [int] NULL, [outputs] [int] NULL, [customInput_1] [int] NULL, [customInput_2] [int] NULL, [razaoSMSID] [int] NOT NULL, CONSTRAINT [PK_Rota] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] END GO /****** Object: StoredProcedure [dbo].[ProcP2] Script Date: 08/26/2010 00:40:37 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ProcP2]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N'create PROCEDURE [dbo].[ProcP2] -- Add the parameters for the stored procedure here @provaID varchar(10), @etapaID varchar(10), @cnnStr nvarchar(200) AS BEGIN SET NOCOUNT OFF; -- temporary data delete from tmp_sync declare @str varchar(200) select @str = ''select veiculoid, convert( varchar(20), max(data), 120 ) from rotaSMS where provaid = '' + @ProvaID + '' and etapaid = '' + @etapaid + '' group by veiculoid'' exec (''insert into tmp_sync Select * from OPENROWSET(''''SQLNCLI'''','''''' + @cnnStr + '''''','''''' + @str + '''''') AS a;'') declare @str1 varchar(max); select @str1 = ''SELECT [VeiculoID],[ProvaID],[SafetyBoxID],[EtapaID],[data],[latitude],[longitude]''+ '',[velocidade],[rumo],[altitude],[satelites],[inputs],[outputs],[customInput_1],[customInput_2],[razaoSMSID] FROM FuncTable ( '' + @provaID + '', '' + @etapaID + '') '' --[VeiculoID],[ProvaID],[SafetyBoxID],[EtapaID],[data],[latitude],[longitude],[velocidade],[rumo],[altitude],[satelites],[inputs],[outputs],[customInput_1],[customInput_2],[razaoSMSID] exec (''insert into OPENROWSET(''''SQLNCLI'''','''''' + @cnnStr + '''''', ''''select [VeiculoID],[ProvaID],[SafetyBoxID],[EtapaID],[data],[latitude],[longitude],[velocidade],[rumo],[altitude],[satelites],[inputs],[outputs],[customInput_1],[customInput_2],[razaoSMSID] from rotasms'''') '' + @str1 + '' '' ) print @str1 END ' END GO /****** Object: UserDefinedFunction [dbo].[FuncTable] Script Date: 08/26/2010 00:41:03 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[FuncTable]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT')) BEGIN execute dbo.sp_executesql @statement = N' CREATE FUNCTION [dbo].[FuncTable](@ProvaID int, @etapaID int) RETURNS @retFindReports TABLE ( -- columns returned by the function [VeiculoID] [int] NOT NULL, [ProvaID] [int] NOT NULL, [SafetyBoxID] [int] NOT NULL, [EtapaID] [int] NOT NULL, [data] [datetime] NOT NULL, [latitude] [float] NOT NULL, [longitude] [float] NOT NULL, [velocidade] [int] NOT NULL, [rumo] [int] NOT NULL, [altitude] [float] NOT NULL, [satelites] [int] NOT NULL, [inputs] [int] NULL, [outputs] [int] NULL, [customInput_1] [int] NULL, [customInput_2] [int] NULL, [razaoSMSID] [int] NOT NULL ) AS -- body of the function BEGIN DECLARE @veiculoID varchar(20) DECLARE @datetime varchar(20) DECLARE db_cursor CURSOR FOR select veiculoid, convert( varchar(20), max(data), 120 ) from rota R left join participacaoprova P on R.unitid = P.unitid group by veiculoid OPEN db_cursor FETCH NEXT FROM db_cursor INTO @veiculoID, @datetime WHILE @@FETCH_STATUS = 0 BEGIN declare @dtOld datetime -- insert the new positions only i.e. the ones that aren''t in the safetyrally original DB if not exists (select 1 from tmp_sync where veiculo = @veiculoID) begin INSERT @retFindReports select distinct veiculoid, @provaID , safetyboxid, @etapaID , data, latitude, longitude, velocidade, rumo, altitude, satelites, inputs, outputs, CustomInput_1, CustomInput_2, razaoSMSID from Rota R left join ParticipacaoProva P on R.UnitID = P.unitid where P.unitid is not null and veiculoid = @veiculoID and data = @datetime end --insert the updated positions only if most recent set @dtOld = ( select convert( varchar(20), max(datetime), 120 ) from tmp_sync where veiculo = @veiculoID group by veiculo ) if (@datetime > @dtOld) begin INSERT @retFindReports select distinct veiculoid, @provaID , safetyboxid, @etapaID , data, latitude, longitude, velocidade, rumo, altitude, satelites, inputs, outputs, CustomInput_1, CustomInput_2, razaoSMSID from Rota R left join ParticipacaoProva P on R.UnitID = P.unitid where P.unitid is not null and veiculoid = @veiculoID and data = @datetime end FETCH NEXT FROM db_cursor INTO @veiculoID, @datetime END CLOSE db_cursor DEALLOCATE db_cursor RETURN END ' END GO /****** Object: StoredProcedure [dbo].[ProcSyncParticipacao] Script Date: 08/26/2010 00:40:38 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ProcSyncParticipacao]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N'create PROCEDURE [dbo].[ProcSyncParticipacao] -- Add the parameters for the stored procedure here @provaID varchar(10), @cnnStr nvarchar(200) AS BEGIN SET NOCOUNT ON; delete from participacaoProva declare @str varchar(max); select @str = ''select P.*, S.unitid from participacaoprova P, safetybox S where P.SafetyBoxId = S.dispositivoid and provaid='' + @provaID ; exec (''INSERT into participacaoprova Select * from OPENROWSET(''''SQLNCLI'''','''''' + @cnnStr + '''''','''''' + @str + '''''') AS a;'') END ' END GO /****** Object: UserDefinedFunction [dbo].[FuncTable_rotagps] Script Date: 08/26/2010 00:41:04 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[FuncTable_rotagps]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT')) BEGIN execute dbo.sp_executesql @statement = N' CREATE FUNCTION [dbo].[FuncTable_rotagps](@ProvaID int, @etapaID int) RETURNS @retFindReports TABLE ( -- columns returned by the function [VeiculoID] [int] NOT NULL, [ProvaID] [int] NOT NULL, [SafetyBoxID] [int] NOT NULL, [EtapaID] [int] NOT NULL, [data] [datetime] NOT NULL, [latitude] [float] NOT NULL, [longitude] [float] NOT NULL, [velocidade] [int] NOT NULL, [rumo] [int] NOT NULL, [altitude] [float] NOT NULL, [satelites] [int] NOT NULL, [inputs] [int] NULL, [outputs] [int] NULL, [customInput_1] [int] NULL, [customInput_2] [int] NULL, [logComunicacaoID] [int] NULL, sensores int not null, cobertura bit not null ) AS -- body of the function BEGIN DECLARE @veiculoID varchar(20) DECLARE @datetime varchar(20) DECLARE db_cursor CURSOR FOR select veiculoid, convert( varchar(20), max(data), 120 ) from rotahistorico R left join participacaoprova P on R.unitid = P.unitid group by veiculoid OPEN db_cursor FETCH NEXT FROM db_cursor INTO @veiculoID, @datetime WHILE @@FETCH_STATUS = 0 BEGIN declare @dtOld datetime -- insert the new positions only i.e. the ones that aren''t in the safetyrally original DB if not exists (select 1 from tmp_sync_rotagps where veiculo = @veiculoID) begin INSERT @retFindReports select distinct veiculoid, @provaID , safetyboxid, @etapaID , data, latitude, longitude, velocidade, rumo, altitude, satelites, inputs, outputs, CustomInput_1, CustomInput_2, NULL, 0, 0 from Rotahistorico R left join ParticipacaoProva P on R.UnitID = P.unitid where P.unitid is not null and veiculoid = @veiculoID and data <= @datetime end --insert the updated positions only if most recent set @dtOld = ( select convert( varchar(20), max(datetime), 120 ) from tmp_sync_rotagps where veiculo = @veiculoID group by veiculo ) if (@datetime > @dtOld) begin INSERT @retFindReports select distinct veiculoid, @provaID , safetyboxid, @etapaID , data, latitude, longitude, velocidade, rumo, altitude, satelites, inputs, outputs, CustomInput_1, CustomInput_2, NULL, 0, 0 from RotaHistorico R left join ParticipacaoProva P on R.UnitID = P.unitid where P.unitid is not null and veiculoid = @veiculoID and data <= @datetime and data > @dtOld end FETCH NEXT FROM db_cursor INTO @veiculoID, @datetime END CLOSE db_cursor DEALLOCATE db_cursor RETURN END ' END GO /****** Object: StoredProcedure [dbo].[ProcP4] Script Date: 08/26/2010 00:40:38 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ProcP4]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[ProcP4] -- Add the parameters for the stored procedure here @provaID varchar(10), @etapaID varchar(10), @cnnStr nvarchar(200) AS BEGIN SET NOCOUNT OFF; -- temporary data delete from tmp_sync_rotagps declare @str varchar(200) select @str = ''select veiculoid, convert( varchar(20), max(data), 120 ) from rotaGPS where provaid = '' + @ProvaID + '' and etapaid = '' + @etapaid + '' group by veiculoid'' exec (''insert into tmp_sync_rotagps Select * from OPENROWSET(''''SQLNCLI'''','''''' + @cnnStr + '''''','''''' + @str + '''''') AS a;'') declare @str1 varchar(max); select @str1 = ''SELECT [VeiculoID],[ProvaID],[SafetyBoxID],[EtapaID],[data],[latitude],[longitude]''+ '',[velocidade],[rumo],[altitude],[satelites],[inputs],[outputs],[customInput_1],[customInput_2],[logComunicacaoID],[sensores],[cobertura] FROM FuncTable_rotagps ( '' + @provaID + '', '' + @etapaID + '') '' exec (''insert into OPENROWSET(''''SQLNCLI'''','''''' + @cnnStr + '''''', ''''select [VeiculoID],[ProvaID],[SafetyBoxID],[EtapaID],[data],[latitude],[longitude],[velocidade],[rumo],[altitude],[satelites],[inputs],[outputs],[customInput_1],[customInput_2],[logComunicacaoID],[sensores],[cobertura] from rotagps'''') '' + @str1 + '' '' ) print @str1 END ' END GO /****** Object: StoredProcedure [dbo].[ProcP1] Script Date: 08/26/2010 00:40:36 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ProcP1]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[ProcP1] AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; begin transaction DECLARE @unitID bigint DECLARE @datetime datetime DECLARE db_cursor CURSOR FOR select unitid, max(data) from Rota group by unitid OPEN db_cursor FETCH NEXT FROM db_cursor INTO @unitID, @datetime WHILE @@FETCH_STATUS = 0 BEGIN insert into rotaHistorico SELECT [UnitID] ,[data] ,[latitude] ,[longitude] ,[velocidade] ,[rumo] ,[altitude] ,[satelites] ,[inputs] ,[outputs] ,[customInput_1] ,[customInput_2] ,[razaoSMSID] FROM [srgprs].[dbo].[Rota] where UnitID = @unitID and data < @datetime delete from Rota where UnitID = @unitID and data < @datetime FETCH NEXT FROM db_cursor INTO @unitID, @datetime END CLOSE db_cursor DEALLOCATE db_cursor commit transaction END ' END GO