21-10-12, 05:09 PM
كاتب الموضوع : BADRMEDIA
عندما تكون مدير للأنظمة ( DBAS ) داخل مؤسسة من المهم جدا لك مراقبة السيرفرات وأن تكون على علم بحالة توقف أى منها
سنتعرف على طريقتين للاعلام بتوقف السيرفر SQL
الطريقة الأولي : الاعلام البريدى عبر رسالة محلية
الطريقة الثانية : الاعلام البريدى عبر رسالة الكترونية على بريدك
==========================================
الطريقة الأولي :
أنشأ مجلد على القرص المحلي C باسم HeartBeat - تعني نبض القلب
تنشأ الملف ServiceList.txt
وتكتنب بداخله هذه الأسطر وهى الخدمات التى ستراقب
SQL,MSSQLServer
SQL,SQLSERVERAGENT
YUKON,MSSQLServer
YUKON,SQLSERVERAGENT
YUKON,MSSQLServerOLAPService
ETL,MSSQLServer
ETL,SQLSERVERAGENT
SQL,SQLSERVERAGENT
YUKON,MSSQLServer
YUKON,SQLSERVERAGENT
YUKON,MSSQLServerOLAPService
ETL,MSSQLServer
ETL,SQLSERVERAGENT
ننشأ الملف CheckHeartbeat.vbs داخل المجلد
ونكتب بداخله هذا الكود
كود :
'Objective: TO check the Heartbeat of all SQL Server services
'Author: BADRMEDIA
'Date: April 2, 2007
on error resume next
Set iFSO = CreateObject("Scripting.FilesyStemObject")
Set oFSO = CreateObject("Scripting.FilesyStemObject")
InputFile="c:\Heartbeat\Servicelist.txt"
Outputfile="c:\Heartbeat\Status.txt"
Set ifile = iFSO.OpenTextFile(inputfile)
Set ofile = ofso.createTextFile(OutputFile, True)
Do until ifile.AtEndOfLine
servicelist= ifile.ReadLine
strcomputer=left(servicelist,instr(servicelist,",")-1)
Service =right(servicelist,len(servicelist)-instr(servicelist,","))
ofile.writeline Now()
ofile.writeline "ServerName: " & strcomputer
ofile.writeline "ServiceName: " & Service
Set objWMIService =nothing
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
if err.number<>0 then
ofile.writeline "Error: " & err.number
ofile.writeline "Error: " & err.description
else
Set colItems = nothing
query=""
query = "Select * from Win32_Service where name = '" & Service & "'"
'msgbox query
Set colItems = objWMIService.ExecQuery(query,,48)
if err.number<>0 then
ofile.writeline "Error: " & err.number
ofile.writeline "Error: " & err.description
else
For Each objItem in colItems
ofile.writeline "Status: " & objItem.Status
ofile.writeline "State: " & objItem.State
next
next
end if
end if
err.number=0
Loop
msgbox "SQL Service Status Check completed"
عند تشغيل الملف - سنجد أنه كون ملف باسم Status.txt
اطلعه علي محتواه