วันอังคารที่ 10 กรกฎาคม พ.ศ. 2561

SQL Server Agent


      สวัสดีครับทุกท่าน
      เนื่องจากที่ผ่านมาผมได้ใช้ SQL Server Agent และเห็นว่ามีประโยชน์ วันนี้ผมเลยจะมาแชร์เรื่องการใช้ งาน SQL Server Agent ใน โปรแกรม SQL Server กันครับ

SQL Server Agent คืออะไร?

      SQL Server Agent เป็นการกำหนดงานอัตโนมัติให้กับ SQL Server เพื่อทำงานของระบบที่ทำงานเป็นประจำหรือตั้งไว้ล่วงหน้าครับ
      ผมขอยกตัวอย่างเพื่อให้เข้าใจยิ่งขึ้นเช่น
      ผมมี Database เยอะมากๆๆ และผมจำเป็นที่จะต้อง Back up Database ทุกเดือนซึ่งเมื่อก่อนเนี่ยเมื่อถึงต้นเดือนผมก็จะเข้าไป SQL Server เพื่อ Back Up Database หลายๆ Database จึงทำให้เสียเวลาครับ
     จะดีกว่าใหมที่มีเครื่องมือที่่สามารถ Back up Database แทนเราอัตโนมัติทุกเดือน ซึ่ง SQL Server Agent สามารถช่วยได้ครับ      

รูปภาพแสดง SQL Server Agent

การเปิดใช้งาน

    โดย Default SQL Server Agent จะ Stop การทำงานของ SQL Server Agent เราจำเป็นที่จะต้อง Start ตัว SQL Server Agent ก่อนจะใช้งาน โดยคลิกขวาไปที่ SQL Server Agent -> Start ดังรูปครับ

รูปภาพแสดงวิธีการ Start SQL Server Agent

การใช้งาน SQL Server Agent

     ใน SQL Server Agent จะแบ่งหัวข้อออกออกเป็นดังนี้
  • Jobs                  คือ เป็นตัวกำหนดช่วงเวลาที่ต้องการให้ทำงาน
  • Alerts               คือ จะแจ้งเหตุการณ์เมื่อมี เหตุการณ์ หรือ Error ตรงตามที่กำหนดไว้
  • Proxies             คือ การสั่งงานผ่าน Proxy
  • Error  Logs       คือ ประวัติการทำงานของ Jobs ว่าทำงานได้ปกติหรือไม่

รูปภาพแสดง SQL Server Agent เมื่อทำการ Start เรียบร้อยแล้ว




สมมุติตัวอย่างผมต้องการให้ SQL Server Agent ทำการ BackUp ข้อมูลทุกวันที่ 1 เวลาเที่ยงคืนของทุกเดือน (ที่ผมเลือกเที่ยงคืนเพราะว่าเที่ยงคืนไม่ค่อยมีคนใช้งานจึงไม่ส่งกระทบกับระบบมากนัก) ผมก็จำเป็นที่จะต้องตั้งค่า SQL Server Agent ดังนั้ครับ


      1.คลิกขวาที่ Jobs->New Jobs ดังรูปด้านล่าง

รูปภาพแสดงการ New Job
      
      2. ทำการตั้งชื่ออะไรก็ได้ของงาน และ ใส่คำอธิบายลงไป ตามรูปด้านล่าง
                  a. คือ ให้ใส่ชื่อของงาน
                  b. คือ ให้ใส่คำอธิบายของงาน
รูปภาพแสดงการตั้งชื่อและคำอธิบายของ Job



      3. กด Step ตรง Panel Select a page และ ทำการกดปุ่ม New เพื่อสร้าง Step ขึ้นมา (Step คือคำสั่งที่ต้องการกระทำเมื่องานถึงเวลาที่กำหนด) ตามรูปด้านล่าง
            a. คือ การคลิกปุ่ม Step
            b. คือ การคลิกปุ่ม New
รูปภาพเข้าหน้า Step

      4. หน้าต่าง New Job Step จะแสดงขึ้นมา หลังจากนั้น ให้ใส่ชื่อ Step -> เลือก Type เป็น T-SQL -> เลือก Database ที่จะรันร่วมกับ T-SQL -> ใส่คำส่อง T-SQL -> กดปุ่ม OK
            a. คือ สำหรับใส่ชื่อ Step ซึ่งเป็นชื่ออะไรก็ได้ (ในตัวอย่างนี้ผมใส่ว่า "BackUp Database Test")
            b. คือ เลือกว่าเราต้องการใช้คำสั้งแบบใหนในการสั่งงาน (ในตัวอย่างนี้ผมเลือกเป็น "Transact-SQL script (T-SQL)")
            c. คือการเลือกว่าจะให้ คำสั่ง T-SQL มีผลต่อถังDatabase ถังใหน (ในตัวอย่างผมเลือกถังชื่อว่า "Test" เพราะผมต้องการ Back Up Database ถังที่ชื่อว่า "Test" ครับ)
            d. คือช่องใส่คำสั่ง T-SQL (ในตัวอย่างนี้ผมใส่คำสั่ง Back Up Database ถังที่ชื่อว่า Test ไปไว้ที่ Drive: C:\TEST\SQL\ แล้วตั้งชื่อไฟล์ที่ Back Up ว่า test2_backup_[year]-[Month]-[day].bak ดังนี้ครับ

Declare @DatabaseName varchar(50)
Declare @PathTo varchar(300)
Declare @Fullpath varchar(300)
set @DatabaseName = 'Test'
set @PathTo = 'C:\Test\SQL\'
set @Fullpath = @PathTo + @DatabaseName + '_backup_'
+ convert(varchar,year(getDate())) + '-'
+ convert(varchar,month(getDate())) + '-'
+ convert(varchar,day(getDate())) + '.bak'

BACKUP DATABASE @DatabaseName TO
DISK=@Fullpath with NOFORMAT, INIT

)

รูปภาพแสดงการตั้งค่า Step




      5. กด Schedules ตรง Panel Select a page และ ทำการกดปุ่ม New เพื่อสร้าง Schedules ขึ้นมา (Schedules คือหน้าไว้กำหนดช่วงเวลาที่ต้องทำงาน) ตามรูปด้านล่าง
            a. คือ การคลิกปุ่ม Schedules
            b. คือ การคลิกปุ่ม New

รูปภาพเข้าหน้า Schedule

      6. หน้าต่าง New Job Schedule จะแสดงขึ้นมา หลังจากนั้น ให้ตั้งชื่อ Schedule ตั้งเวลาที่ต้องการทำงาน เสร็จแล้วกด ปุ่ม OK ดังรูปด้านล่าง
             a. คือการตั้งชื่อ Schedule เป็นอะไรก็ได้ (ในตัวอย่างนี้ผมตั้งชื่อว่า NightTime)
             b. คือตั้งช่วงเวลาที่ต้องให้ทำงาน (ในตัวอย่างนี้ผมตั้งเป็น Month)
             c. คือการตั้งเวลาว่าให้ทำงานเวลากี่โมง (ในตัวอย่างนี้ผมตั้งเป็นเที่ยงคืนคือ 00:00:00)
             d. คือการตั้งให้ทำงานตลอดไปโดยไม่มีที่สิ่นสุด

รูปภาพการตั้งค่า Schedule


      7. ให้กดปุ่ม OK อีกครั้ง เป็นการเสร็จสิ้นการตั้งค่า่ครับตามรูปด้านล่างครับ



8. ทดสอบการทำงานโดยการ คลิกขวาที่ตามชื่อ JOB ที่เราสร้าง -> Start Job As Step...

รูปภาพแสดงการทดสอบรัน Job ที่เราสร้าง



จะขึ้นหน้าต่างแสดงสถานะการทำงานครับ หากไม่มี ERROR แสดงว่า Job ที่เราสร้างสามารถทำงานได้สมบูรณ์

รูปภาพแสดงผลของการทดสอบรัน Job



หลังจากนี้ SQL Server Agent ก็จะทำงาน Back Up Database ของเรา Auto แล้วครับโดยที่เราไม่ต้องเข้าไป Back Up เองอีกแล้วครับ 



ผมหวังว่าโพสน์นี้จะมีประโยชน์กับผู้อ่านครับขอบคุณครับ



1 ความคิดเห็น: