tmstamp monitor


点击(此处)折叠或打开

  1. USE [DBCenter]
  2. GO

  3. /****** Object: StoredProcedure [dba].[GetRowDiff] Script Date: 2017/5/8 13:06:50 ******/
  4. SET ANSI_NULLS ON
  5. GO

  6. SET QUOTED_IDENTIFIER ON
  7. GO


  8. alter procedure [dba].[GetRowDiff]
  9. as
  10. declare
  11. @databse_name varchar(15),
  12. @schema_name varchar(10),
  13. @table_name varchar(100),
  14. @max_tmstamp_2 bigint,
  15. @row_count_2 bigint,
  16. @max_tmstamp_1 bigint,
  17. @row_count_1 bigint,
  18. @datetime datetime,
  19. @sql varchar(8000),
  20. @record_time_1 varchar(19),
  21. @record_time_2 varchar(19)
  22. SET NOCOUNT on
  23. set @sql=''
  24. set @datetime =getdate()
  25. truncate table DBCenter..viewTMstamp_diff
  26. declare mycursor cursor for
  27.             select aa.databse_name,aa.[schema_name],aa.table_name,aa.max_tmstamp as max_tmstamp_2,aa.row_count as row_count_2,bb.max_tmstamp as max_tmstamp_1,bb.row_count as row_count_1,
  28.             convert(varchar(19),aa.record_time,120) as record_time_2,convert(varchar(19),bb.record_time,120) as record_time_1 from
  29.             (
  30.             select a.databse_name,a.[schema_name],a.table_name,a.max_tmstamp,a.row_count,a.record_time from [DBCenter].[dbo].[viewMaxTMtamp] a with (nolock)
  31.             where
  32.             convert(varchar(10),a.record_time,120)+' '+convert(varchar(2),a.record_time,114) = convert(varchar(10),dateadd(hh,0,getdate()),120)+' '+convert(varchar(2),dateadd(hh,0,getdate()),114)
  33.              ) as aa
  34.             join
  35.             (
  36.             select b.databse_name,b.[schema_name],b.table_name,b.max_tmstamp,b.row_count,b.record_time from [DBCenter].[dbo].[viewMaxTMtamp] b with (nolock)
  37.             where
  38.             convert(varchar(10),b.record_time,120)+' '+convert(varchar(2),b.record_time,114) = convert(varchar(10),getdate(),120)+' '+convert(varchar(2),dateadd(hh,-1,getdate()),114)
  39.             ) as bb
  40.             on aa.databse_name=bb.databse_name
  41.             and aa.[schema_name]=bb.[schema_name]
  42.             and aa.table_name=bb.table_name

  43.  --打开游标
  44.     open mycursor
  45.     --从游标里取出数据赋值到我们刚才声明的2个变量中
  46.     fetch next from mycursor into @databse_name,@schema_name,@table_name,@max_tmstamp_2,@row_count_2,@max_tmstamp_1,@row_count_1,@record_time_2,@record_time_1
  47.     --判断游标的状态
  48.     -- 0 fetch语句成功
  49.     ---1 fetch语句失败或此行不在结果集中
  50.     ---2 被提取的行不存在
  51.     while (@@fetch_status=0)
  52.     begin
  53.     set @sql='insert into DBCenter..viewTMstamp_diff([db_name],[schema_name],[table_name],[row_count_diff],[tmstmp_row_count_diff],[tmstmp_diff],[record_time_2],[record_time_1],[date_time])
  54.      select '+''''+@databse_name+''''+','+''''+@schema_name+''''+','+''''+@table_name+''''+','+cast((@row_count_2-@row_count_1)as varchar(100))+' as row_count_diff,count(1) as tmstmp_row_count_diff ,'
  55.      +cast((@max_tmstamp_2-@max_tmstamp_1)as varchar(100))+' as tmstmp_diff,'+''''+convert(varchar(19),@record_time_2,120)+''''+','+''''+convert(varchar(19),@record_time_1,120)+''''+','+''''+convert(varchar(19),getdate(),120)+''''+'
  56.      from '+@databse_name+'.'+@schema_name+'.'+@table_name+' with (nolock) where cast(TMSTAMP as bigint) >='+cast(@max_tmstamp_1 as varchar(100))+' and cast(TMSTAMP as bigint)<'+cast(@max_tmstamp_2 as varchar(100))
  57.  --print @sql
  58.      EXEC (@sql)
  59.     set @sql='insert into DBCenter..viewTMstamp_diff_his([db_name],[schema_name],[table_name],[row_count_diff],[tmstmp_row_count_diff],[tmstmp_diff],[record_time_2],[record_time_1],[date_time])
  60.      select '+''''+@databse_name+''''+','+''''+@schema_name+''''+','+''''+@table_name+''''+','+cast((@row_count_2-@row_count_1)as varchar(100))+' as row_count_diff,count(1) as tmstmp_row_count_diff ,'
  61.      +cast((@max_tmstamp_2-@max_tmstamp_1)as varchar(100))+' as tmstmp_diff,'+''''+convert(varchar(19),@record_time_2,120)+''''+','+''''+convert(varchar(19),@record_time_1,120)+''''+','+''''+convert(varchar(19),getdate(),120)+''''+'
  62.      from '+@databse_name+'.'+@schema_name+'.'+@table_name+' with (nolock) where cast(TMSTAMP as bigint) >='+cast(@max_tmstamp_1 as varchar(100))+' and cast(TMSTAMP as bigint)<'+cast(@max_tmstamp_2 as varchar(100))
  63.  --print @sql
  64.      EXEC (@sql)
  65.     fetch next from mycursor into @databse_name,@schema_name,@table_name,@max_tmstamp_2,@row_count_2,@max_tmstamp_1,@row_count_1,@record_time_2,@record_time_1
  66.     end
  67.     --关闭游标
  68.     close mycursor        
  69.     --撤销游标
  70.     DEALLOCATE mycursor
  71.     
  72.     SET NOCOUNT off


  73. GO


点击(此处)折叠或打开

  1. USE [datayesdb]
  2. GO

  3. /****** Object: StoredProcedure [dba].[GetMaxTMstmp] Script Date: 2017/5/8 14:07:04 ******/
  4. SET ANSI_NULLS ON
  5. GO

  6. SET QUOTED_IDENTIFIER ON
  7. GO



  8. CREATE procedure [dba].[GetMaxTMstmp]
  9. @database varchar(20),
  10. @schema varchar(20),
  11. @tbname nvarchar(100),
  12. @datetime datetime
  13. as

  14. declare @Max_TMstmp bigint
  15. declare @sql nvarchar(4000)
  16. declare @sql2 nvarchar(4000)
  17. declare @i int=0
  18. DECLARE @startDate1 DATE;
  19. DECLARE @startDate DATETIME;
  20. DECLARE @endDate DATETIME ;
  21. SET NOCOUNT on

  22. SET @startDate1=GETDATE();SELECT @startDate=DATEADD(DAY,-0,@startDate1);
  23. SET @endDate=DATEADD(d,+1,CONVERT(DATETIME,@startDate1));
  24. --SELECT @startDate startDate,@endDate endDate;

  25. --set @tbname='bond'
  26. --print @tbname
  27. begin
  28. --print @tbname
  29. set @sql2='select @i=count(1) from sys.columns col with (nolock) join sys.tables tbl with (nolock) on col.object_id=tbl.object_id where tbl.name='+''''
  30.             +@tbname+''''+' and col.name in ('+''''+'TMSTAMP'+''''+','+''''+'UPDATE_TIME'+''''+') and tbl.type='+''''+'U'+''''+ ' and tbl.schema_id =schema_id('+''''+@schema+''''+')'
  31.             --print @sql2
  32. exec sp_executesql @sql2 ,N'@i int out' ,@i out
  33. --print @i
  34. if isnull(@i,0)=2
  35. begin
  36. set @sql= 'insert into [DBCenter].[dbo].[viewMaxTMtamp] ([databse_name],[schema_name],[table_name],[min_tmstamp],[max_tmstamp],[row_count],[min_update_time],[max_update_time],[record_time]) select '
  37.         +''''+@database+''''+','+''''+@schema+''''+','+''''+@tbname+''''+
  38.         ', isnull(cast(min(TMSTAMP) as bigint),0)'+', isnull(cast(max(TMSTAMP) as bigint),0)'+',count(1)'+', min(UPDATE_TIME)'+', max(UPDATE_TIME),'+''''
  39.         +cast (@datetime as varchar(20))+''''+' from '+@database+'.'+@schema+'.'+@tbname +' with (nolock)'
  40. --print @sql
  41. EXEC (@sql)
  42. end
  43. end
  44. SET NOCOUNT off

  45. -------------------------------------------------------------------------------------------------------------------------

  46. GO


点击(此处)折叠或打开

  1. USE [datayesdb]
  2. GO

  3. /****** Object: StoredProcedure [dba].[GetMaxTMstmp_job] Script Date: 2017/5/8 14:07:45 ******/
  4. SET ANSI_NULLS ON
  5. GO

  6. SET QUOTED_IDENTIFIER ON
  7. GO

  8. CREATE procedure [dba].[GetMaxTMstmp_job]
  9. as
  10. declare
  11. @database varchar(20),
  12. @schema varchar(20),
  13. @tblname varchar(100),
  14. @datetime datetime
  15. SET NOCOUNT on
  16. set @datetime=GETDATE()
  17. set @database='datayesdb'
  18. declare mycursor cursor for select schema_name(schema_id) [schema],name from sys.tables with (nolock) where type='U' order by [schema],name
  19.  --打开游标
  20.     open mycursor
  21.     --从游标里取出数据赋值到我们刚才声明的2个变量中
  22.     fetch next from mycursor into @schema,@tblname

  23.     --判断游标的状态
  24.     -- 0 fetch语句成功
  25.     ---1 fetch语句失败或此行不在结果集中
  26.     ---2 被提取的行不存在
  27.     while (@@fetch_status=0)
  28.     begin
  29.     --print @tblname
  30.     exec dba.GetMaxTMstmp @database,@schema,@tblname,@datetime
  31.     fetch next from mycursor into @schema,@tblname
  32.     end
  33.     --关闭游标
  34.     close mycursor        
  35.     --撤销游标
  36.     DEALLOCATE mycursor
  37.     
  38.     SET NOCOUNT off

  39. GO


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16131092/viewspace-2138382/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/16131092/viewspace-2138382/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值