1

GV Phi Loan - Khoa CNTT – HUI

Nội dung

• SQL Server Agent – Quản l{ operator – Quản l{ alert – Quản l{ job và schedule – Database mail

• Khái quát về Replication – Phân loại replication – Phân loại replication agent – Tạo distributor – Tạo Publication

2

GV Phi Loan - Khoa CNTT – HUI

Vai trò của SQL Server Agent

• Bất kz nhiệm vụ (task) nào phải thực thi nhiều hơn 1 lần đều có thể tự động hóa.

• Lợi ích của tự động hóa nhiệm vụ

– Giảm thời gian phải thực thi công việc lặp lại – Bảo đảm các nhiệm vụ lặp lại luôn được thực

hiện 1 cách đồng nhất.

• SQL Server Agent cho phép tự động hóa các nhiệm vụ quản trị của SQL Server(SQL Server administration task)

3

GV Phi Loan - Khoa CNTT – HUI

SQL Server Agent is a Microsoft Windows service that executes scheduled administrative tasks, which are called jobs in SQL Server 2012.

4

GV Phi Loan - Khoa CNTT – HUI

Benefit of SQL Server Agent

• SQL Server Agent sử dụng SQL Server để

lưu trữ thông tin Job. – Một job có thể chứa từ 1 đến nhiều step. – Mỗi step chứa 1 task riêng như backup

CSDL.

5

GV Phi Loan - Khoa CNTT – HUI

Benefit of SQL Server Agent

• SQL Server Agent có thể chạy 1 job theo kế hoạch (schedule) để đáp ứng lại 1 sự kiện (event) hay theo yêu cầu. – Ví dụ: muốn thực hiện tự động việc backup dữ liệu cả công ty sau mỗi ngày làm việc  lên lịch backup tự động sau 22:00 từ Monday đến Friday; Nếu có vấn đề thì SQL Server Agent có thể ghi lại event và cảnh báo cho người quản trị.

6

GV Phi Loan - Khoa CNTT – HUI

Khởi động SQL Server Agent

• Khi cài đặt SQL Server dịch vụ này không

được khởi động tự động

• Để SQL Server Agent được khởi động tự

động mỗi lần khởi động lại server – Control Panel  Administrative Tools 

Services console

– Start ➪ Programs ➪ Microsoft SQL Server 2008 ➪ Configuration Tools ➪ SQL Server Configuration Manager.

7

GV Phi Loan - Khoa CNTT – HUI

Các thành phần của SQL Server Agent

• Job • Schedule • Alert • Operator

8

GV Phi Loan - Khoa CNTT – HUI

Job

• Job là 1 nhiệm vụ hay 1 nhóm nhiệm vụ

mà SQL Server Agent sẽ thực thi.

• Sử dụng job để xác định các nhiệm vụ

quản trị (administrative task) và giám sát cả lúc thành công cũng như lúc thất bại. • Một job có thể chạy trên 1 server cục bộ

hay trên nhiều server từ xa.

9

GV Phi Loan - Khoa CNTT – HUI

Định nghĩa job

• Khi định nghĩa job, có thể gán chủng loại cho

job.

• Mỗi job có 1 tên duy nhất. Chỉ có người

quản trị mới có thể thay đổi owner của 1 job hiện có.

• Chọn Target Local Server cho các job chạy

trên máy cục bộ đơn. Nếu job được lập lịch chạy trên nhiều server, chọn Target Multiple Servers và chọn server nào là các server đích.

10

GV Phi Loan - Khoa CNTT – HUI

Ví dụ Job

• Các job tiêu biểu như: – backing up a database, – reorganizing the indexes – executing a SQL Server Integration Services

(SSIS)

- Chạy file .exe

11

GV Phi Loan - Khoa CNTT – HUI

Job

• Có thể chạy job theo nhiều cách:

̀i 1 hay nhiều alerts.

– Do 1 hay nhiều kế hoạch (schedules) – Đáp ứng lại vớ – Thực thi thủ tục sp_start_job

• Mỗi hành động trong 1 job được gọi là

job step. – Ví dụ: các step như chạy 1 lệnh T-SQL, thực

thi SSIS package, …

12

GV Phi Loan - Khoa CNTT – HUI

Trình tự tạo 1 job – Bằng Management Studio

• Chọn New Job…. từ folder Jobs – Xác định thông tin của job mới – Xác định các step – Xác định schedule – Xác định alert – Xác định Notifications

13

GV Phi Loan - Khoa CNTT – HUI

Tạo job mới từ Transact SQL

• Dùng các lệnh:

– sp_add_job (Transact-SQL) – sp_add_jobstep (Transact-SQL) – sp_add_schedule (Transact-SQL) – sp_attach_schedule (Transact-SQL) – sp_add_jobserver (Transact-SQL)

14

GV Phi Loan - Khoa CNTT – HUI

15

GV Phi Loan - Khoa CNTT – HUI

Tạo job step bằng Management Studio • Trong hộp thoại Job Properties, chọn trang Steps\New. • Xác định tên Job step • Xác định loại: có rât nhiều loại khác nhau nhưng thông

dụng nhất là: – Transact-SQL Script – PowerShell – Operating System (CmdExec)

• Xác định Database và các lệnh tương ứng • Tab Advanced: cho phép xác định cái gì xảy ra sau khi step thực thi, step được chạy thử bao nhiều lần trong lần sai đầu, cho phép xác định độ trể tính bằng phút giữa các lần thử

16

GV Phi Loan - Khoa CNTT – HUI

Xác định job step

17

GV Phi Loan - Khoa CNTT – HUI

Tạo Transact-SQL Job Step

-- creates a job step that that uses Transact-SQL USE msdb; GO EXEC sp_add_jobstep

@job_name = N'Weekly Sales Data Backup', @step_name = N'Set database to read only', @subsystem = N'TSQL', @command = N'ALTER DATABASE SALES SET READ_ONLY', @retry_attempts = 5, @retry_interval = 5 ;

GO

18

GV Phi Loan - Khoa CNTT – HUI

Tạo PowerShell Script Job Step

-- creates a PowerShell job step that finds the processes that use

more than 1000 MB of memory and kills them

USE msdb; GO EXEC sp_add_jobstep

@job_name = N'Weekly Sales Data Backup', @step_name = N'Kills all processes that use more than 1000 MB of memory', @subsystem = N'PowerShell', @command = N'Get-Process | Where-Object { $_.WS -gt 1000MB } | Stop-Process', @retry_attempts = 5, @retry_interval = 5 ;

GO

19

GV Phi Loan - Khoa CNTT – HUI

Tạo CmdExec job step

-- creates a job step that that uses CmdExec USE msdb; GO EXEC sp_add_jobstep

@job_name = N'Weekly Sales Data Backup', @step_name = N'Set database to read only', @subsystem = N'CMDEXEC', @command = C:\clickme_scripts\SQL11\PostBOLReorg GetHsX.exe', @retry_attempts = 5, @retry_interval = 5 ;

GO

20

GV Phi Loan - Khoa CNTT – HUI

Ghi nhật ký Job Step • Agent có thể viết ngõ ra từ 1 số job steps vào:

– Hoặc 1 file của hệ điều hành – Hoặc bảng sysjobstepslogs trong DB msdb

• Các loại job step có thể log:

– Executable programs and operating system commands. – Transact-SQL statements. – Analysis Services tasks.

• Chỉ các job step được thực thi bởi thành viên sysadmin có thể

viết log vào OS file

• Nếu người dùng là thành viên của SQLAgentUserRole,

SQLAgentReaderRole, hay SQLAgentOperatorRole thì ngõ ra chỉ được viết vào bảng sysjobstepslogs

21

GV Phi Loan - Khoa CNTT – HUI

Quản lý nhiều Job Step

• Nếu 1 job có

nhiều step, cần xác định thứ tự các step

(control of flow)

22

GV Phi Loan - Khoa CNTT – HUI

Quản lý nhiều job step

• Có 4 tùy chọn action khi kết thúc 1 step

thành công hay thất bại – Go to the next step. – Go to step x, where x is the number of any

step defined in the job.

– Quit the job, reporting success. – Quit the job, reporting failure

23

GV Phi Loan - Khoa CNTT – HUI

Quản lý nhiều Job Step

• Để xác định action của control-of-flow, dựa vào success hoặc failure của mỗi bước đề quyết định bước tiếp theo. • Có thể xác định số lần thử khi 1 step bị lỗi và khoảng thời gian (interval) giữa 2 lần thử.

24

GV Phi Loan - Khoa CNTT – HUI

Quản lý nhiều Job Step

• Job steps must be self-contained

– Một job không thể truyền giá trị giữa các step.

• Để truyền giá trị từ 1 Transact-SQL job step

đến 1 step khác: dùng bảng cố định hay bảng tạm toàn cục.

• Để truyền giá trị giữa các step chạy lệnh

cmdExec: sử dụng các file. Step kế tiếp sẽ đọc file được tạo ở step trước đó.

25

GV Phi Loan - Khoa CNTT – HUI

Quản lý các loại job

• Nhấp phải tại folder SQL Server

Agent\Jobs và chọn lệnh Manage Job Categories

26

GV Phi Loan - Khoa CNTT – HUI

27

GV Phi Loan - Khoa CNTT – HUI

Schedules

• Schedule xác định khi nào 1 job sẽ chạy. • Có thể 1 hay nhiều job có cùng 1

schedule, và 1 hay nhiều schedule có thể áp dụng cho cùng 1 job.

28

GV Phi Loan - Khoa CNTT – HUI

Schedules

• Schedule có thể xác định các điều kiện về thời gian như sau để 1 job hoạt động: – Mỗi lần SQL Server Agent khởi động – Mỗi lần CPU chuyển sang idle. – Tại 1 thời điểm xác định (tại ngày đó giờ đó) – Schedule lặp lại (recurring schedule)

29

GV Phi Loan - Khoa CNTT – HUI

Tạo schedule

• Lập kế hoạch (scheduling) cho các job của SQL Server Agent có nghĩa là xác định các điều kiện để job tự động chạy mà không cần có sự can thiệp của người dùng.

• Có thể tạo mới 1 schedule hay gán 1 schedule có sẵn cho 1 job nếu muốn nó chạy tự động

30

GV Phi Loan - Khoa CNTT – HUI

Tạo schedule

• SQL Server Management Studio • Transact-SQL • SQL Server Management Objects

31

GV Phi Loan - Khoa CNTT – HUI

Tạo schedule từ Management Studio

• Nhấp phải tại folder Jobs, chọn Manage

Schedules\New.

• Xác định tên, thời điểm bắt đầu, tần sô và chọn job

được gán cho lịch vừa tạo

• Nếu không muốn lịch có tác dụng ngay, xóa check

box Enabled

• Chọn loại Schedule:

– Start automatically when SQL Server Agent starts – Start whenever the CPUs become idle. – Recurring – One time

32

GV Phi Loan - Khoa CNTT – HUI

Tạo schedule từ Transact-SQL

USE msdb ; GO EXEC sp_add_schedule

@schedule_name = N'NightlyJobs' , @freq_type = 4, @freq_interval = 1, @active_start_time = 010000 ;

GO EXEC sp_attach_schedule

@job_name = N'BackupDatabase', @schedule_name = N'NightlyJobs' ;

GO

33

GV Phi Loan - Khoa CNTT – HUI

sp_add_schedule [ @schedule_name = ] 'schedule_name'

[ , [ @enabled = ] enabled ] [ , [ @freq_type = ] freq_type ] [ , [ @freq_interval = ] freq_interval ] [ , [ @freq_subday_type = ] freq_subday_type ] [ , [ @freq_subday_interval = ] freq_subday_interval ] [ , [ @freq_relative_interval = ] freq_relative_interval ] [ , [ @freq_recurrence_factor = ] freq_recurrence_factor ] [ , [ @active_start_date = ] active_start_date ] [ , [ @active_end_date = ] active_end_date ] [ , [ @active_start_time = ] active_start_time ] [ , [ @active_end_time = ] active_end_time ] [ , [ @owner_login_name = ] 'owner_login_name' ] [ , [ @schedule_uid = ] schedule_uid OUTPUT ] [ , [ @schedule_id = ] schedule_id OUTPUT ] [ , [ @originating_server = ] server_name ] /* internal */

34

GV Phi Loan - Khoa CNTT – HUI

Tạo schedule

• Có 2 cách tạo schedule:

– Tạo schedule trong lúc tạo job. – Tạo schedule riêng rồi gán vào job thích

hợp sau

• Có thể gán (attach) một schedule cho

nhiều job khác nhau, cũng như có thể bỏ gán (detach) schedule khỏi các job.

35

GV Phi Loan - Khoa CNTT – HUI

Lập lịch sử dụng khi CPU rỗi (CPU Idle Schedules) • Để sử dụng tối đa tài nguyên CPU, có thể định nghĩa điều kiện CPU rỗi (CPU idle) đối với SQL Server Agent.

• SQL Server Agent sẽ sử dụng những lúc

CPU idle để chạy các job. – Ví dụ: có thể schedule cho 1 job xây dựng

lại chỉ mục (index) trong lúc CPU rỗi

36

GV Phi Loan - Khoa CNTT – HUI

Lập lịch sử dụng khi CPU rỗi (CPU Idle Schedules) • Trước khi xác định jobs để chạy lúc CPU rỗi, cần xác định tải (load) của CPU lúc bình thường. – Dùng SQL Server Profiler – Hay dùng Performance Monitor

37

GV Phi Loan - Khoa CNTT – HUI

Lập lịch sử dụng khi CPU rỗi (CPU Idle Schedules) • Định nghĩa điều kiện để “CPU idle”:

– Việc sử dụng CPU phải thấp hơn phần trăm nào đó và được duy trì trong 1 khoảng thời gian xác định.

• Để xác định điều kiện “CPU idle: chọn

trang Advanced trong hôp̣ thoại Properties của SQL Server Agent

38

GV Phi Loan - Khoa CNTT – HUI

Alert

• Alert là một đáp ứng tự động (automatic response) ứng với 1 sự kiện (event) xác định nào đó. – Ví dụ: sự kiện có thể là khi bằt đầu 1 job

hay khi các tài nguyên hệ thống tiến đến 1 ngưỡng xác định.

39

GV Phi Loan - Khoa CNTT – HUI

Giám sát và đáp ứng sự kiện

• Có thể định nghĩa 1 alert cho 1 hay nhiếu

event

• Alert có thể đáp ứng 1 event bằng cách:

– Notifying an administrator – Hoặc Running a job – Hoặc Forward event đến nhật k{ của MS

Windows application trên 1 máy tính khác. • Ví dụ: tạo cảnh báo đến operator ngay tức thì nếu event của 1 lỗi có severity 19 xảy ra.

40

GV Phi Loan - Khoa CNTT – HUI

Các loại event

• SQL Server events • SQL Server performance conditions • Microsoft Windows Management Instrumentation (WMI) events – WMI is the infrastructure for management data and operations on Windows-based operating systems.

41

GV Phi Loan - Khoa CNTT – HUI

Giám sát và đáp ứng sự kiện

• Phương pháp mà Agent dùng để giám

sát (monitor) sự kiện phụ thuộc vào loại event. – Khi alert là performance condition: Agent

trực tiếp giám sát

– Khi alert là WMI event, Agent đăng k{

event query với Windows

42

GV Phi Loan - Khoa CNTT – HUI

Giám sát và đáp ứng sự kiện

• Để đáp ứng message từ SQL Server, Agent giám

sát Windows application log.

• Agent chỉ có thể đáp ứng các message xuất hiện

trong log này.

• Mặc định SQL Server ghi lại các message sau

vào Windows application log: – Severity 19 or higher sysmessages errors. – Any RAISERROR statement invoked by using the

WITH LOG syntax

– Any application event that is logged by using

xp_logevent.

43

GV Phi Loan - Khoa CNTT – HUI

Hoạt động của SQL Server Agent

• Khi SQL Server ghi nhật k{ message,

Agent service so sánh message với các alert.

• Bất kể event đến từ nguồn nào, Agent service đáp ứng lại event đó bằng cách thực hiện nhiệm vụ được xác định bởi alert.

44

GV Phi Loan - Khoa CNTT – HUI

Để message ghi vào Windows log

• Để errors có severity <19 "always logged"có,

dùng sp_altermessage.

• Dùng lệnh RAISERROR với tùy chọn WITH LOG

syntax.

45

GV Phi Loan - Khoa CNTT – HUI

Lệnh sp_altermessage

sp_altermessage

[ @message_id = ] message_number , [ @parameter = ]'write_to_log', [ @parameter_value = ]'value'

• write_to_log : là sysname phải được xác lập

1 trong 2 giá trị: WITH_LOG hay NULL

• Ví dụ sp_altermessage 55001, 'WITH_LOG', 'true'; GO

46

GV Phi Loan - Khoa CNTT – HUI

Thông báo lỗi do người dùng định nghĩa (user-defined errors)

• Khi xây dựng 1 ứng dụng có sử dụng dữ liệu của SQL Server,lập trình viên có thể định nghĩa tập thông báo lỗi cho riêng họ bằng thủ tục sp_addmessage. – Mã lỗi có thễ là bất kz giá trị nào từ 50,001

đến 2,147,483,647.

– Độ nghiêm trọng của lỗi (severity) là từ 1

đến 25)

47

GV Phi Loan - Khoa CNTT – HUI

Thông báo lỗi do người dùng định nghĩa (user-defined errors)

• Ví dụ:

sp_addmessage 50001, 1, ‘This is a test message.’;

• Xem các thông báo lỗi

SELECT * FROM sys.sysmessages

48

GV Phi Loan - Khoa CNTT – HUI

Lệnh RAISERROR

RAISERROR ( { msg_id | msg_str | @local_variable } { ,severity ,state } [ ,argument [ ,...n ] ] ) [ WITH option [ ,...n ] ] • msg_str là message của user, có định

dạng như hàm printf của C

49

GV Phi Loan - Khoa CNTT – HUI

WITH option của RAISERROR

50

GV Phi Loan - Khoa CNTT – HUI

Ví dụ lệnh RAISERROR

RAISERROR (N'This is message %s %d.',

10, 1, -- State, N'number', 5) with log

GO

51

GV Phi Loan - Khoa CNTT – HUI

Định nghĩa Alert

• Để xác định 1 alert, cần xác định:

– Tên của alert. – Sự kiện hay điều kiện thực thi đê kích khởi

(trigger) alert.

– Hành động (action) mà SQL Server Agent sẽ thực hiện để đáp ứng lại sự kiện hay điều kiện thực thi.

52

GV Phi Loan - Khoa CNTT – HUI

Tạo alert bằng thông báo lỗi – Dùng Management Studio

• Chọn New Alert từ SQL Server Agent. • Xác định tên alert, chọn loại alert là SQL Server

event.

• Chọn database để xác định alert dùng cho DB

nào.

• Gõ vào error number hoặc chọn mức độ Severity • Để hạn chế alert chỉ với các message có chứa

chuỗi k{ tự đặc biệt, đánh dấu check box Raise alert when message contains, gõ vào chuỗi message không vượt quá 100 k{ tự.

53

GV Phi Loan - Khoa CNTT – HUI

54

GV Phi Loan - Khoa CNTT – HUI

Tạo alert bằng thông báo lỗi – Dùng Transaction SQL sp_add_alert [ @name = ] 'name'

[ , [ @message_id = ] message_id ] [ , [ @severity = ] severity ] [ , [ @enabled = ] enabled ] [ , [ @delay_between_responses = ] delay_between_responses ] [ , [ @notification_message = ] 'notification_message' ] [ , [ @include_event_description_in = ] include_event_description_in ] [ , [ @database_name = ] 'database' ] [ , [ @event_description_keyword = ] 'event_description_keyword_pattern' ] [ , { [ @job_id = ] job_id | [ @job_name = ] 'job_name' } ] [ , [ @raise_snmp_trap = ] raise_snmp_trap ] [ , [ @performance_condition = ] 'performance_condition' ] [ , [ @category_name = ] 'category' ] [ , [ @wmi_namespace = ] 'wmi_namespace' ] [ , [ @wmi_query = ] 'wmi_query' ]

55

GV Phi Loan - Khoa CNTT – HUI

Tạo alert bằng thông báo lỗi – Dùng Transaction SQL

-- adds an alert that runs the Back up the AdventureWorks -- assumes that the message 55001 and the Back up the

dventureWorks2012 Database job already exist.

USE msdb ; GO EXEC dbo.sp_add_alert @name = N'Test Alert‘, @message_id =

55001, @severity = 0,

@notification_message = N'Error 55001 has occurred. The

database will be backed up...',

@job_name = N'Back up the AdventureWorks2012 Database' ; GO

56

GV Phi Loan - Khoa CNTT – HUI

Tạo alert điều kiện thực thi

• Khi tạo alert cho việc kiểm thử điều kiện – thực

thi: • Chọn đối tượng và counter để giám sát. • Đặt ngưỡng cho counter • Có thể xác định alert xảy ra khi counter thấp hơn,

bằng hay vượt qua 1 giá trị xác định nào đó.

• Với 1 số counter, có thể xác định 1 instance mà từ

đó counter được sử dụng.

• Ví dụ: có thể giám sát kích cỡ file dữ liệu cho

tất cả CSDL hay chỉ cho 1 CSDL nào đó.

57

GV Phi Loan - Khoa CNTT – HUI

Quản lý alert

• Tùy vào việc cài đặt SQL Server như thế nào, có thể không có alert nào được tạo ra bởi SQL Server.

• SQL Server tạo 1 số alert mặc định dành cho 1 số chức năng đặc biệt chẳng hạn như khi cài đặt replication. Tên của 14 alert dành cho replication đều bắt đầu là ‘‘Replication.’’ Mặc định các alert này là disable và không gán cho bất kz operator nào.

58

GV Phi Loan - Khoa CNTT – HUI

Operator

• Operator định nghĩa thông tin (contact

information) của 1 cá nhân có nhiệm vụ bảo trì 1 hay nhiều instances của SQL Server. • Operator không chứa thông tin bảo mật

(security information)

• SQL Server Agent sẽ gửi alert đến các operator theo 1 trong các cách sau: – E-mail – Pager (through e-mail) – net send

59

GV Phi Loan - Khoa CNTT – HUI

Tạo mới operator

• Trong SQL Server Agent, nhấp phải tại folder Operators, chọn New operator

• Các tính chất cơ bản của operator:

– Operator name: mỗi operator phải có tên

duy nhất, không dài hơn 128 k{ tự. – Contact Information: xác định operator

được cảnh báo như thế nào.

60

GV Phi Loan - Khoa CNTT – HUI

Gán alert cho các Operator

• Có thể gán các cảnh báo cho các operator

để đáp ứng lại alert. – Ví dụ: có thể gán luân phiên nhiệm vụ cảnh báo operator bởi các alert đã lên lịch chẳng hạn operator A được cảnh báo từ các alert xảy ra vào Thứ hai, Thứ tư, hay Thứ sáu. Operator B nhận cảnh báo từ các alert xảy ra vào Thứ ba, Thứ năm hay Thứ bảy.

61

GV Phi Loan - Khoa CNTT – HUI

Fail-Safe Operators

• Fail-safe operator sẽ nhận cảnh báo sau khi tất cả cảnh báo đến các operator đã định sẵn bị đều bị lỗi. – Ví dụ: nếu đã xác định 3 operator cho các

cảnh báo pager và không có 1 operator nào có thể nhận được, khi đó fail-safe operator sẽ được cảnh báo.

62

GV Phi Loan - Khoa CNTT – HUI

Fail-Safe Operators

• Fail-safe operator được cảnh báo khi :

– Các operator chịu trách nhiệm về alert đã không thể nhận được cảnh báo (paged). – Nguyên nhân đến từ các operator chính

như địa chỉ pager không đúng hay operator đang nghỉ phép (off-duty)

63

GV Phi Loan - Khoa CNTT – HUI

Fail-Safe Operators

• Do tính chất bảo mật, không thể nào xóa operator đã đuợc gán nhiệm vụ fail-safe mà không gán lại nhiệm vụ này cho 1 operator khác.

64

GV Phi Loan - Khoa CNTT – HUI

Database mail

• Để gửi cảnh báo đến operators bằng e-mail hay pagers, cần phải cấu hình SQL Server Agent cho phép sử dụng Database Mail

• Khi sử dụng Database Mail, các ứng dụng CSDL có thể gửi e-mail message đến người dùng. – Message có thể chứa kết quả truy vấn, có thể đính

kèm file từ bất kz tài nguyên nào trong mạng.

• Sử dụng Mail Transfer Protocol (SMTP) • Không cần phải cài đặt extended MAPI client

(Microsoft Outlook)

65

GV Phi Loan - Khoa CNTT – HUI

Lợi ích khi sử dụng Database email

• Database Mail có các tính chất sau:

– Reliability – Scalability – Security – Supportability

66

GV Phi Loan - Khoa CNTT – HUI

Database email - Reliability

• Database Mail sử dụng giao thức chuẩn SMTP

(Simple Mail Transfer Protocol) để gửi mail. Có thể sử dụng Database Mail mà không cần cài đặt Extended MAPI client.

• Process isolation: để giảm thiểu ảnh hưởng trên SQL Server, thành phần để phân phối e-mail nằm bên ngoài SQL Server, trong 1 quy trình riêng biệt. SQL Server sẽ tiếp tục xếp hàng đợi (queue) các email ngay khi quy trình bên ngoài dừng hay bị lỗi và sẽ gửi ngay khi quy trình bên ngoài hoạt động trở lại.

67

GV Phi Loan - Khoa CNTT – HUI

Database email - Reliability

• Failover accounts: Database Mail cho

phép xác định nhiều hơn 1 SMTP server. Khi 1 SMTP server không hoạt động, mail vẫn có thể được phân phối đến 1 SMTP server khác.

• Cluster support: Database Mail được hổ

trợ đầy đủ trên 1 cluster.

68

GV Phi Loan - Khoa CNTT – HUI

Kiến trúc của Database Mail

• Được thiết kế theo kiểu kiến trúc hàng đợi (queued architecture) sử dụng công nghệ service broker

• Khi người dùng thực hiện lệnh

sp_send_dbmail, thủ tục sẽ chèn thêm 1 mục vào mail queue và tạo một record chứa e-mail message.

69

GV Phi Loan - Khoa CNTT – HUI

Kiến trúc của Database Mail

• Việc chèn một email mới sẽ khởi động

process bên ngoài Database Mail (DatabaseMail.exe). Process bên ngoài này sẽ đọc thông tin email, và gửi email đến e- mail server thích hợp.

• Process bên ngoài này cũng chèn mục mới vào status queue và khởi động 1 thủ tục nội bộ cập nhật trạng thái của e-mail message.

70

GV Phi Loan - Khoa CNTT – HUI

Kiến trúc của Database Mail

71

GV Phi Loan - Khoa CNTT – HUI

Configuring Database Mail

• Cấu hình cho Database Mail đơn giản

hơn nhiều so với SQL Mail. – Dùng Database Mail Configuration Wizard.

72

GV Phi Loan - Khoa CNTT – HUI

Configuring Database Mail

Các bước thực hiện: 1. Cho phép Database Mail. 2. Create a Database Mail profile. 3. Create a Database Mail account. 4. Add the account to the profile. 5. Grant permission for a user or a role to

use the Database Mail profile.

73

GV Phi Loan - Khoa CNTT – HUI

Cho phép Database Mail

• Mặc định không cho phép Database Mail. • Để cho phép Database Mail, dùng 1 trong

3 cách sau: – Từ Database Mail Configuration Wizard – Lệnh sp_configure ‘Database Mail XPs’ – Dùng Surface Area Configuration Tool của

policy-based management.

74

GV Phi Loan - Khoa CNTT – HUI

Database Mail Configuration Wizard

• Triển khai folder Management, nhấp phải

tại Database Mail , chọn Configure Database Mail.

• Nếu là lần đầu cài đặt Database Mail setup, chọn tùy chọn mặc định Set up Database Mail – Đặt tên Profile – Tạo SMTP account

75

GV Phi Loan - Khoa CNTT – HUI

Mối quan hệ của các đối tượng trong Database mail

76

GV Phi Loan - Khoa CNTT – HUI

Tạo SMTP account

• Tài khoản của Database Mail chỉ được dùng cho Database Mail, không tương đương với tài khoản của SQL Server hay tài khoản của Microsoft Windows.

77

GV Phi Loan - Khoa CNTT – HUI

78

GV Phi Loan - Khoa CNTT – HUI

Khai báo tài khoản SMTP mới

• Account name: tên account mới. • Description Type: mô tả account (tùy chọn) • E-mail address: là địa chỉ để SQL Server

Agent gửi e-mail.

• Server name: gõ vào tên hay địa chỉ IP của

SMTP server mà tài khoản sẽ dùng để gửi e- mail. – Ví dụ: smtp.mail.yahoo.com

79

GV Phi Loan - Khoa CNTT – HUI

Thủ tục sp_send_dbmail

• Sau khi đã xây dựng database mail profile, dùng thủ tục sp_send_dbmail để gửi thư.

• Ví dụ: EXECUTE msdb.dbo.sp_send_dbmail

@profile_name='SQL2008_DBMail_Profile',

@recipients='tulinhkhoa@yahoo.com',@subject='Database

Mail Test',

@body='This is a test e-mail sent from Database Mail on

PHILOAN\SQL_DY'

80

GV Phi Loan - Khoa CNTT – HUI

Database mail

• Để gửi được e-mail bằng Database Mail,

phải là thành viên của: – sysadmin fixed server role – Hay DatabaseMailUserRole in msdb.

• Để kiểm tra tình trạng các mail:

SELECT * FROM msdb.dbo.sysmail_allitems;

81

GV Phi Loan - Khoa CNTT – HUI

Cấu hình để SQL Server Agent sử dụng Database mail 1.

2.

3. 4. 5. 6.

In Object Explorer, expand a SQL Server instance. Right-click SQL Server Agent, and then click Properties. Click Alert System. Select Enable Mail Profile. In the Mail system list, select Database Mail. In the Mail profile list, select a mail profile for Database Mail. Restart SQL Server Agent.

7.

82

GV Phi Loan - Khoa CNTT – HUI