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