NOVOTS KMS 词汇表 Glossary    联系我们 Contact Us
查询 Search  
   
按类别浏览 Browse by Category
NOVOTS KMS .: 数据库 .: 降低异常文本报警-SQL Server文本传输优化

降低异常文本报警-SQL Server文本传输优化

问题:
每周的例会汇报上,都要汇报每个平台的ticket
其中中间平台常规作业处理的单据一直居高不下,特必是异构数据集成平台erpinterfae
09年曾经对erpinterface的作业进行过梳理,DBA曾下线部分经常失败没有应用的作业,部分作业添加判断逻辑,便于自动补数据
10年的单据已经明显将下来
但是部门结构调整后,相对战略平台的问题,中间平台额问题依然时最多的
虽然问题并不是平台本身造成的,而是集成园的异构性和不一致性,异步造成的
本着减少工作量(人手问题似乎又上了日程)的原则
本周对erpinterface频繁失败的作业进行逻辑优化

优化原则:数据源问题产生的失败,非集成环节问题,不报失败,避免mornitor报警;为便查证,可邮件通知.
具体分析:个别营销系统频次不定的作业无论成败,不报失败,如有异常只报给集成和营销系统;
        经常抛出零字节失败的作业,近一年来的在ECC查验正常:此类作业添加异常判断:
        在异常判断true时,发出异常通知邮件和记录,不进入实际传输,直接成功退出本步和作业.
        只有异常判断faulse的情况下,失败退出本步.然后进入实际传输,并由mornitor监控有效数据的异常.
        异常判断包括:存在性时效性非空性三重条件判断;
        个别作业涉及多个文本,需要保证只要有一个文本正常,即进入实际传输;同时即使只有一个文本有异常,也要发出报警邮件.//只有所有文本都存在不可访问时,才不往下进行实际传输,同时成功退出。
        为便于查证.报警记录写入特设的txt_mail_log表.
逻辑控制:放弃分散步步为营策略,采用一体化逻辑并肩两只采用一种技术(全Vb或者全sql),添加标志位;
采用全局变量,便于移植和修改;
VB脚本中的msg信息可以便于调试发现语法错误;但是正是部署前需要删除;
一旦忘记删除,会造成作业调度时一直等待手工干预,不能正常进行。
安全考虑:
dts名称ts_i_025_zhuanchu_check_mail ,逻辑判断用VB实现,由于涉及邮件服务器和数据库服务器访问权限,故设所有者密码 dtspass

调度命令:DTSRun /S erpinterface /N ts_i_025_zhuanchu_check_mail /M dtspass /E
脚本如下:
'该脚本时分散脚本优化后的结果,实现全局变量标志记录,for内部报警,便于移植和提交效率
'判断文本是否正常,如正常则逻辑失败,进入实际传输步骤
'如存在一种异常,则逻辑成功,报警,作业显示成功状态,不进入下一步,也不被监控
'只有文本正常但存在质量问题时才传输失败,被监控
'2010年4月27日张伟逻辑添加'判断文本是否正常,如正常则逻辑失败,进入实际传输步骤

Function Main()
 Dim fso,myFile,filename(2),filestr,f,bug(2)
  mail_to=DTSGlobalVariables("mail_info").Value
'mail_to="zhangweid_cn@lxx.com"
  Set conn1 = CreateObject("ADODB.Connection")
  conn1.provider = "sqloledb"                                        
  conn1.open "邮件服务器名称 ", "user", "pass"
 conn1.DefaultDatabase = "master"

 Set conn2 = CreateObject("ADODB.Connection")
 conn2.provider = "sqloledb"                                        
 conn.open "数据库服务器名称 ", "user", "pass"
 conn2.DefaultDatabase = "ts_i"
                         
             filename(1)="ts_i_025_h_zhuanchu.txt"                          
             filename(2)="ts_i_025_i_zhuanchu.txt"    
             bug(1)=""
  bug(2)=""

 j=0
 k=0
 t=0

'记录
 For i = 1 To 2
   filestr=DTSGlobalVariables("dirstr").Value&filename(i)
  Set fso = CreateObject("Scripting.FileSystemObject")
  IF Not (fso.FileExists(filestr))  THEN 
    j=j+1
   bug(i)=bug(i)&"不存在"
   
  Else
   
   Set f = fso.GetFile(filestr)
   file_time  = f.DateLastModified
            current_time=now()
          if  DateDiff("n",file_time,current_time)>1440 then
    k=k+1
    bug(i)=bug(i)&"无新文本"
    else
     s = f.size
     if  s = 0 then 
      t=t+1
      bug(i)=bug(i)&"零字节"
     
     end if
   
   end if
  End If

  if Len(bug(i))>0 then
'if j>0 or k>0 or t>0 then

   sub_info=DTSGlobalVariables("server_info").Value&DTSGlobalVariables("job_name").Value&"作业因文本"&filestr&bug(i)&"中断"
   'sub_info=DTSGlobalVariables("server_info").Value&DTSGlobalVariables("job_name").Value&"作业因文本"&filestr&bug(i)&"中断,请"&DTSGlobalVariables("user_info").Value&"知晓"
   ' MsgBox sub_info
   sqltext1 = "exec master.dbo.sp_send_cdosysmail '"&mail_to&"','"&sub_info&"'"
   'MsgBox sqltext1
   conn1.execute(sqltext1)

   sqltext2 ="insert INTO [Ts_i].[dbo].[txt_mail_log] ([job_name] ,[txt_Name] ,[MailFrom] ,[MailTo] ,[MailCC] ,[MailSubject] ,[MailHead] ,[sendTime] ,[createtime])VALUES ('"&DTSGlobalVariables("job_name").Value&"','"&filestr&"' ,'<lqm@lxx.com> ' , '"&mail_to&"','' ,'"&sub_info&"','' ,convert(char,getdate(),112),getdate())"
   'MsgBox sqltext2
   conn2.execute(sqltext2)
  end if
  
  Next


if Len(bug(1))=0  or Len(bug(2))=0 then
             Main = DTSTaskExecResult_Failure
else
 Main =DTSTaskExecResult_Success
end if
End Function


这篇文章对你多有用?

用户评语

添加评语
当前还没有评语.


.: .: .: .: .:
[ 登陆 ]
北京护航科技有限公司 2006

Novots Technologies Limited