Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan Database Mail di Amazon RDS for SQL Server
Anda dapat menggunakan Database Mail untuk mengirim pesan email ke pengguna dari instans basis data Amazon RDS di SQL Server. Pesan dapat berisi file dan hasil kueri. Database Mail mencakup komponen berikut:
-
Objek konfigurasi dan keamanan – Objek-objek ini membuat profil dan akun, dan disimpan di basis data
msdb
. -
Objek pesan – Objek-objek ini mencakup sp_send_dbmail
prosedur tersimpan yang digunakan untuk mengirim pesan, dan struktur data yang menyimpan informasi tentang pesan. Semuanya disimpan di basis data msdb
. -
Pembuatan log dan audit objek – Database Mail menulis informasi log ke basis data
msdb
dan log peristiwa aplikasi Microsoft Windows. -
Database Mail dapat executable –
DatabaseMail.exe
membaca dari antrean di basis datamsdb
dan mengirim pesan email.
RDS mendukung Database Mail untuk semua versi SQL Server di Edisi Web, Standar, dan Perusahaan.
Batasan
Batasan berikut berlaku untuk menggunakan Database Mail di instans DB SQL Server Anda:
-
Pesan basis data tidak mendukung Edisi Ekspres SQL Server.
-
Mengubah parameter konfigurasi Database Mail tidak didukung. Untuk melihat nilai preset (default), gunakan prosedur tersimpan sysmail_help_configure_sp
. -
Lampiran file tidak sepenuhnya didukung. Untuk informasi selengkapnya, lihat Bekerja dengan lampiran file.
-
Ukuran lampiran file maksimum adalah 1 MB.
-
Database Mail memerlukan konfigurasi tambahan pada instans DB Multi-AZ. Untuk informasi selengkapnya, lihat Pertimbangan untuk deployment multi-AZ.
-
Mengonfigurasikan Agen SQL Server untuk mengirim pesan email ke operator yang sudah ditentukan tidak didukung.
Mengaktifkan Database Mail
Gunakan proses berikut untuk mengaktifkan Database Mail untuk instans DB Anda:
-
Buat grup parameter baru.
-
Ubah grup parameter untuk mengatur parameter
database mail xps
ke 1. -
Hubungkan grup parameter baru dengan instans DB.
Membuat grup parameter untuk Database Mail
Buat grup parameter untuk parameter database mail xps
yang sesuai dengan edisi SQL Server dan versi instans DB Anda.
catatan
Anda juga dapat mengubah grup parameter yang ada. Ikuti prosedur di Mengubah grup parameter untuk Database Mail.
Contoh berikut membuat grup parameter untuk Edisi Standar SQL Server 2016.
Untuk membuat grup parameter
Masuk ke AWS Management Console dan buka konsol Amazon RDS di https://console.aws.amazon.com/rds/.
-
Di panel navigasi, pilih Grup parameter.
-
Pilih Buat grup parameter.
-
Di panel Buat grup parameter, lakukan hal berikut:
-
Untuk Rangkaian grup parameter, pilih sqlserver-se-13.0.
-
Untuk Nama grup, masukkan pengidentifikasi grup parameter, seperti
dbmail-sqlserver-se-13
. -
Untuk Deskripsi, masukkan
Database Mail XPs
.
-
-
Pilih Buat.
Contoh berikut membuat grup parameter untuk Edisi Standar SQL Server 2016.
Untuk membuat grup parameter
-
Gunakan salah satu perintah berikut.
Untuk Linux, macOS, atau Unix:
aws rds create-db-parameter-group \ --db-parameter-group-name
dbmail-sqlserver-se-13
\ --db-parameter-group-family "sqlserver-se-13.0
" \ --description "Database Mail XPs
"Untuk Windows:
aws rds create-db-parameter-group ^ --db-parameter-group-name
dbmail-sqlserver-se-13
^ --db-parameter-group-family "sqlserver-se-13.0
" ^ --description "Database Mail XPs
"
Mengubah grup parameter untuk Database Mail
Ubah parameter database mail xps
di grup parameter yang sesuai dengan edisi SQL Server dan versi instans DB Anda.
Untuk mengaktifkan Database Mail, atur parameter database mail xps
ke 1.
Contoh berikut akan mengubah grup parameter yang telah Anda buat untuk Edisi Standar SQL Server 2016.
Untuk mengubah grup parameter
Masuk ke AWS Management Console dan buka konsol Amazon RDS di https://console.aws.amazon.com/rds/.
-
Di panel navigasi, pilih Grup parameter.
-
Pilih grup parameter, seperti dbmail-sqlserver-se-13.
-
Di bagian Parameter, filter daftar parameter untuk
mail
. -
Pilih Database Mail xps.
-
Pilih Edit parameter.
-
Masukkan
1
. -
Pilih Smpan Perubahan.
Contoh berikut akan mengubah grup parameter yang telah Anda buat untuk Edisi Standar SQL Server 2016.
Untuk mengubah grup parameter
-
Gunakan salah satu perintah berikut ini.
Untuk Linux, macOS, atau Unix:
aws rds modify-db-parameter-group \ --db-parameter-group-name
dbmail-sqlserver-se-13
\ --parameters "ParameterName='database mail xps',ParameterValue=1
,ApplyMethod=immediate"Untuk Windows:
aws rds modify-db-parameter-group ^ --db-parameter-group-name
dbmail-sqlserver-se-13
^ --parameters "ParameterName='database mail xps',ParameterValue=1
,ApplyMethod=immediate"
Kaitkan grup parameter dengan instans DB
Anda dapat menggunakan AWS Management Console atau AWS CLI untuk mengaitkan grup parameter Database Mail dengan instans DB.
Anda dapat mengaitkan grup parameter Database Mail dengan instans DB baru atau yang sudah ada.
-
Untuk instans DB baru, kaitkan saat Anda meluncurkan instans. Untuk informasi selengkapnya, lihat Membuat instans DB Amazon RDS.
-
Untuk instans DB yang sudah ada, kaitkan dengan mengubah instans. Untuk informasi selengkapnya, lihat Memodifikasi instans DB Amazon RDS.
Anda dapat mengaitkan grup parameter Database Mail dengan instans DB baru atau yang sudah ada.
Untuk membuat instans DB dengan grup parameter Database Mail
-
Tentukan jenis mesin DB dan versi utama yang sama seperti yang Anda gunakan saat membuat grup parameter.
Untuk Linux, macOS, atau Unix:
aws rds create-db-instance \ --db-instance-identifier
mydbinstance
\ --db-instance-classdb.m5.2xlarge
\ --enginesqlserver-se
\ --engine-version13.00.5426.0.v1
\ --allocated-storage100
\ --manage-master-user-password \ --master-usernameadmin
\ --storage-typegp2
\ --license-modelli
--db-parameter-group-namedbmail-sqlserver-se-13
Untuk Windows:
aws rds create-db-instance ^ --db-instance-identifier
mydbinstance
^ --db-instance-classdb.m5.2xlarge
^ --enginesqlserver-se
^ --engine-version13.00.5426.0.v1
^ --allocated-storage100
^ --manage-master-user-password ^ --master-usernameadmin
^ --storage-typegp2
^ --license-modelli
^ --db-parameter-group-namedbmail-sqlserver-se-13
Untuk mengubah instans DB dan mengaitkan grup parameter Database Mail
-
Gunakan salah satu perintah berikut ini.
Untuk Linux, macOS, atau Unix:
aws rds modify-db-instance \ --db-instance-identifier
mydbinstance
\ --db-parameter-group-namedbmail-sqlserver-se-13
\ --apply-immediatelyUntuk Windows:
aws rds modify-db-instance ^ --db-instance-identifier
mydbinstance
^ --db-parameter-group-namedbmail-sqlserver-se-13
^ --apply-immediately
Mengonfigurasi Database Mail
Anda melakukan tugas berikut untuk mengonfigurasikan Database Mail:
Buat profil Database Mail.
Buat akun Database Mail.
Tambahkan akun Database Mail ke profil Database Mail.
Tambahkan pengguna ke profil Database Mail.
catatan
Untuk mengonfigurasi Database Mail, pastikan bahwa Anda memiliki izin execute
pada prosedur yang disimpan dalam basis data msdb
.
Membuat profil Database Mail
Untuk membuat profil Database Mail, Anda menggunakan prosedur tersimpan sysmail_add_profile_spNotifications
.
Untuk membuat profil
-
Gunakan pernyataan SQL berikut.
USE msdb GO EXECUTE msdb.dbo.sysmail_add_profile_sp @profile_name = 'Notifications', @description = 'Profile used for sending outgoing notifications using Amazon SES.'; GO
Membuat akun Database Mail
Untuk membuat akun Database Mail, Anda menggunakan prosedur tersimpan sysmail_add_account_spSES
di RDS untuk instans DB SQL Server di VPC pribadi, menggunakan Layanan Email Sederhana Amazon.
Menggunakan Amazon SES memerlukan parameter berikut:
-
@email_address
— Identitas terverifikasi Amazon SES. Untuk informasi selengkapnya, lihat Identitas terverifikasi di Amazon SES. -
@mailserver_name
— Titik akhir SMTP Amazon SES. Untuk informasi selengkapnya, lihat Menghubungkan ke titik akhir Amazon SES SMTP. -
@username
— Nama pengguna SMTP Amazon SES. Untuk informasi selengkapnya, lihat Mendapatkan kredensial Amazon SES SMTP.Jangan gunakan nama AWS Identity and Access Management pengguna.
-
@password
— Kata sandi Amazon SES SMTP. Untuk informasi selengkapnya, lihat Mendapatkan kredensial Amazon SES SMTP.
Untuk membuat akun
-
Gunakan pernyataan SQL berikut.
USE msdb GO EXECUTE msdb.dbo.sysmail_add_account_sp @account_name = 'SES', @description = 'Mail account for sending outgoing notifications.', @email_address = '
nobody@example.com
', @display_name = 'Automated Mailer', @mailserver_name = 'vpce-0a1b2c3d4e5f-01234567.email-smtp.us-west-2.vpce
.amazonaws.com', @port = 587, @enable_ssl = 1, @username = 'Smtp_Username
', @password = 'Smtp_Password
'; GOcatatan
Tentukan kredensial selain prompt yang ditampilkan di sini sebagai praktik terbaik keamanan.
Menambahkan akun Database Mail ke profil Database Mail
Untuk menambahkan akun Database Mail ke profil Database Mail, gunakan prosedur tersimpan sysmail_add_profileaccount_spSES
ke profil Notifications
.
Menambahkan akun ke profil
-
Gunakan pernyataan SQL berikut.
USE msdb GO EXECUTE msdb.dbo.sysmail_add_profileaccount_sp @profile_name = 'Notifications', @account_name = 'SES', @sequence_number = 1; GO
Menambahkan pengguna ke profil Database Mail
Untuk memberikan izin bagi pengguna utama basis data msdb
untuk menggunakan profil Database Mail, Anda menggunakan prosedur sysmail_add_principalprofile_sp
Contoh berikut memberikan akses publik ke profil Notifications
.
Untuk menambahkan pengguna ke profil
-
Gunakan pernyataan SQL berikut.
USE msdb GO EXECUTE msdb.dbo.sysmail_add_principalprofile_sp @profile_name = 'Notifications', @principal_name = 'public', @is_default = 1; GO
Prosedur dan fungsi yang disimpan Amazon RDS untuk Database Mail
Microsoft menyediakan prosedur tersimpan
Prosedur/Fungsi | Deskripsi |
---|---|
rds_fn_sysmail_allitems | Menampilkan pesan terkirim, termasuk yang dikirim oleh pengguna lain. |
rds_fn_sysmail_event_log | Menampilkan acara, termasuk acara untuk pesan yang dikirimkan oleh pengguna lain. |
rds_fn_sysmail_mailattachments | Menampilkan lampiran terkirim, termasuk yang dikirim oleh pengguna lain. |
rds_sysmail_control | Memulai dan menghentikan antrian email (DatabaseMailproses.exe). |
rds_sysmail_delete_mailitems_sp | Menghapus pesan email yang dikirim oleh semua pengguna dari tabel internal Database Mail. |
Mengirim pesan email menggunakan Database Mail
Anda menggunakan prosedur sp_send_dbmail
Penggunaan
EXEC msdb.dbo.sp_send_dbmail @profile_name = '
profile_name
', @recipients = 'recipient1@example.com
[;recipient2
; ...recipientn
]', @subject = 'subject
', @body = 'message_body
', [@body_format = 'HTML'], [@file_attachments = 'file_path1
;file_path2
; ...file_pathn
'], [@query = 'SQL_query'
], [@attach_query_result_as_file =0|1
]';
Parameter berikut diperlukan:
-
@profile_name
– Nama profil Database Mail yang akan digunakan untuk mengirim pesan. -
@recipients
– Daftar alamat email tujuan pengiriman pesan yang dipisahkan titik koma. -
@subject
– Subjek pesan. -
@body
– Konten pesan. Anda juga dapat menggunakan variabel yang dinyatakan sebagai isi.
Parameter berikut ini bersifat opsional:
-
@body_format
– Parameter ini digunakan dengan variabel yang dinyatakan untuk mengirim email dalam format HTML. -
@file_attachments
– Daftar lampiran pesan yang disusun dengan titik koma. Path file harus berupa path absolut. -
@query
– Kueri SQL untuk dijalankan. Hasil kueri dapat dilampirkan sebagai file atau disertakan dalam konten pesan. -
@attach_query_result_as_file
– Apakah melampirkan hasil kueri sebagai file. Atur ke 0 untuk tidak, 1 untuk ya. Default-nya adalah 0.
Contoh
Contoh-contoh berikut ini mendemonstrasikan cara mengirim pesan email.
contoh mengirimkan pesan ke satu penerima
USE msdb GO EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Notifications', @recipients = 'nobody@example.com', @subject = 'Automated DBMail message - 1', @body = 'Database Mail configuration was successful.'; GO
contoh mengirimkan pesan ke beberapa penerima
USE msdb GO EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Notifications', @recipients = 'recipient1@example.com;recipient2@example.com', @subject = 'Automated DBMail message - 2', @body = 'This is a message.'; GO
contoh mengirimkan hasil kueri SQL sebagai lampiran file
USE msdb GO EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Notifications', @recipients = 'nobody@example.com', @subject = 'Test SQL query', @body = 'This is a SQL query test.', @query = 'SELECT * FROM abc.dbo.test', @attach_query_result_as_file = 1; GO
contoh mengirimkan pesan dalam format HTML
USE msdb GO DECLARE @HTML_Body as NVARCHAR(500) = 'Hi, <h4> Heading </h4> </br> See the report. <b> Regards </b>'; EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Notifications', @recipients = 'nobody@example.com', @subject = 'Test HTML message', @body = @HTML_Body, @body_format = 'HTML'; GO
contoh mengirimkan pesan menggunakan pemicu saat peristiwa tertentu terjadi di basis data
USE AdventureWorks2017 GO IF OBJECT_ID ('Production.iProductNotification', 'TR') IS NOT NULL DROP TRIGGER Purchasing.iProductNotification GO CREATE TRIGGER iProductNotification ON Production.Product FOR INSERT AS DECLARE @ProductInformation nvarchar(255); SELECT @ProductInformation = 'A new product, ' + Name + ', is now available for $' + CAST(StandardCost AS nvarchar(20)) + '!' FROM INSERTED i; EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Notifications', @recipients = 'nobody@example.com', @subject = 'New product information', @body = @ProductInformation; GO
Melihat pesan, log, dan lampiran
Anda menggunakan prosedur yang disimpan RDS untuk melihat pesan, log event, dan lampiran.
Untuk melihat semua pesan email
-
Gunakan kueri SQL berikut.
SELECT * FROM msdb.dbo.rds_fn_sysmail_allitems(); --WHERE sent_status='sent' or 'failed' or 'unsent'
Untuk melihat semua log peristiwa email
-
Gunakan kueri SQL berikut.
SELECT * FROM msdb.dbo.rds_fn_sysmail_event_log();
Untuk melihat semua lampiran email
-
Gunakan kueri SQL berikut.
SELECT * FROM msdb.dbo.rds_fn_sysmail_mailattachments();
Menghapus pesan
Anda menggunakan prosedur rds_sysmail_delete_mailitems_sp
yang disimpan untuk menghapus pesan.
catatan
RDS secara otomatis menghapus item tabel mail saat data riwayat DBMail mencapai ukuran 1 GB, dengan jangka waktu penyimpanan setidaknya 24 jam.
Jika Anda ingin menyimpan mail untuk periode yang lebih lama, Anda dapat mengarsipkannya. Untuk informasi selengkapnya, lihat Create a SQL Server Agent job to archive Database Mail messages and event logs
Untuk menghapus semua pesan email
-
Gunakan pernyataan SQL berikut.
DECLARE @GETDATE datetime SET @GETDATE = GETDATE(); EXECUTE msdb.dbo.rds_sysmail_delete_mailitems_sp @sent_before = @GETDATE; GO
Untuk menghapus semua pesan email dengan status tertentu
-
Gunakan laporan SQL berikut untuk menghapus semua pesan yang gagal.
DECLARE @GETDATE datetime SET @GETDATE = GETDATE(); EXECUTE msdb.dbo.rds_sysmail_delete_mailitems_sp @sent_status = 'failed'; GO
Memulai antrean email
Anda menggunakan prosedur rds_sysmail_control
yang disimpan untuk memulai proses Database Mail.
catatan
Mengaktifkan Database Mail secara otomatis memulai antrean email.
Untuk memulai antrean email
-
Gunakan pernyataan SQL berikut.
EXECUTE msdb.dbo.rds_sysmail_control start; GO
Menghentikan antrean email
Anda menggunakan prosedur rds_sysmail_control
yang disimpan untuk memulai menghentikan proses Database Mail.
Untuk menghentikan antrean email
-
Gunakan pernyataan SQL berikut.
EXECUTE msdb.dbo.rds_sysmail_control stop; GO
Bekerja dengan lampiran file
Ekstensi lampiran file berikut tidak didukung di pesan Database Mail messages dari RDS di SQL Server: .ade, .adp, .apk, .appx, .appxbundle, .bat, .bak, .cab, .chm, .cmd, .com, .cpl, .dll, .dmg, .exe, .hta, .inf1, .ins, .isp, .iso, .jar, .job, .js, .jse, .ldf, .lib, .lnk, .mde, .mdf, .msc, .msi, .msix, .msixbundle, .msp, .mst, .nsh, .pif, .ps, .ps1, .psc1, .reg, .rgs, .scr, .sct, .shb, .shs, .svg, .sys, .u3p, .vb, .vbe, .vbs, .vbscript, .vxd, .ws, .wsc, .wsf, and .wsh.
Database Mail menggunakan konteks keamanan Microsoft Windows dari pengguna saat ini untuk mengontrol akses ke file. Pengguna yang login dengan Autentikasi SQL Server tidak dapat melampirkan file menggunakan parameter @file_attachments
dengan prosedur sp_send_dbmail
yang disimpan. Windows tidak mengizinkan SQL Server untuk memberikan kredensial dari komputer jarak jauh ke komputer jarak jauh lainnya. Oleh karena itu, Database Mail tidak dapat melampirkan file dari jaringan bersama saat perintah dijalankan dari komputer selain komputer yang menjalankan SQL Server.
Namun, Anda dapat menggunakan pekerjaan SQL Server Agent untuk melampirkan file. Untuk informasi selengkapnya tentang SQL Server Agent, lihat Menggunakan SQL Server Agent dan SQL Server Agent
Pertimbangan untuk deployment multi-AZ
Ketika Anda mengonfigurasikan Database Mail di instans DB Multi-AZ DB, konfigurasi tidak secara otomatis diperbanyak ke sekunder. Kami merekomendasikan untuk mengonversi instans Multi-AZ ke instans AZ Tunggal, mengonfigurasi Database Mail, kemudian mengonversikan kembali instans DB ke Multi-AZ. Kemudian, kedua node primer dan sekunder memiliki konfigurasi Database Mail.
Jika Anda membuat replika baca dari instans Multi-AZ yang memiliki Database Mail yang dikonfigurasi, replika tersebut akan mewarisi konfigurasi tersebut, namun tanpa kata sandi ke server SMTP. Perbarui akun Database Mail dengan kata sandi.
Menghapus pembatasan SMTP (port 25)
Secara default, AWS memblokir lalu lintas keluar pada SMTP (port 25) untuk RDS untuk instans SQL Server DB. Hal ini dilakukan untuk mencegah spam berdasarkan kebijakan pemilik elastic network interface. Anda dapat menghapus batasan ini jika diperlukan. Untuk informasi selengkapnya, lihat Bagaimana cara menghapus pembatasan pada port 25 dari instans Amazon EC2 atau fungsi Lambda saya