Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:Azure SQL Managed Instance
Dengan menggunakan SQL Server Agent di AzureSQL Managed Instance, Anda dapat membuat dan menjadwalkan pekerjaan yang dapat dijalankan secara berkala terhadap satu atau banyak database. Pekerjaan Agen SQL ini menjalankan kueri Transact-SQL (T-SQL) dan melakukan tugas pemeliharaan. Artikel ini membahas penggunaan SQL Agent untuk Azure SQL Managed Instance.
Catatan
Agen SQL tidak tersedia di Azure SQL Database atau Azure Synapse Analytics. Sebagai gantinya, kami merekomendasikan Otomatisasi pekerjaan dengan Elastic Jobs.
Kapan menggunakan tugas dalam SQL Agent
Ada beberapa skenario ketika Anda dapat menggunakan pekerjaan SQL Agent:
- Otomatisasi tugas manajemen dan jadwalkan untuk dijalankan setiap hari kerja, setelah jam kerja, dll.
- Menyebarkan perubahan skema, manajemen kredensial, pengumpulan data performa, atau pengumpulan telemetri penyewa (pelanggan).
- Perbarui data referensi (informasi umum di semua database) dan muat data dari penyimpanan Azure Blob. Lihat BULK_INSERT untuk argumen yang digunakan untuk mengautentikasi ke penyimpanan Azure Blob.
- Tugas pemeliharaan umum termasuk
DBCC CHECKDBuntuk memastikan integritas data atau pemeliharaan indeks untuk meningkatkan performa kueri. Konfigurasi pekerjaan untuk dieksekusi di seluruh kumpulan database secara berulang, seperti selama di luar jam sibuk. - Kumpulkan hasil kueri dari sekumpulan database ke dalam tabel pusat secara berkelanjutan. Kueri performa dapat terus dijalankan dan dikonfigurasi untuk memicu lebih banyak tugas yang akan dijalankan.
- Mengumpulkan data untuk pelaporan
- Mengumpulkan data dari kumpulan database ke dalam satu tabel tujuan.
- Jalankan kueri pemrosesan data yang berjalan lebih lama di set besar database, misalnya pengumpulan telemetri pelanggan. Hasil dikumpulkan ke dalam satu tabel tujuan untuk analisis lebih lanjut.
- Pergerakan data
- Buat pekerjaan yang mereplikasi perubahan yang dibuat dalam database Anda ke database lain atau kumpulkan pembaruan yang dibuat dalam database jarak jauh dan terapkan perubahan dalam database.
- Buat pekerjaan yang memuat data dari atau ke database Anda menggunakan SQL Server Integration Services (SSIS).
Pekerjaan SQL Agent dalam Azure SQL Managed Instance
SQL Server Agent menjalankan pekerjaan SQL Agent yang digunakan untuk otomatisasi tugas di SQL Managed Instance.
Pekerjaan SQL Agent adalah serangkaian skrip T-SQL tertentu terhadap database Anda. Gunakan pekerjaan untuk menentukan tugas administratif yang dapat dijalankan satu atau beberapa kali dan dipantau keberhasilan atau kegagalannya.
Pekerjaan dapat berjalan pada satu instans lokal atau pada beberapa instans jarak jauh. Pekerjaan SQL Agent adalah komponen Mesin Database internal yang dijalankan dalam layanan SQL Managed Instance.
Ada beberapa konsep utama dalam pekerjaan SQL Agent:
- Langkah-langkah pekerjaan adalah satu atau banyak langkah yang harus dijalankan dalam pekerjaan. Untuk setiap langkah pekerjaan, Anda dapat menentukan strategi coba lagi dan tindakan yang harus terjadi jika langkah pekerjaan berhasil atau gagal.
- Jadwal menentukan kapan pekerjaan harus dijalankan.
- Pemberitahuan memungkinkan Anda menentukan aturan yang digunakan untuk memberi tahu operator melalui email setelah pekerjaan selesai.
Langkah-langkah pekerjaan
Langkah-langkah pekerjaan Agen SQL adalah urutan tindakan yang harus dijalankan Agen SQL. Setiap langkah memiliki langkah berikut yang harus dijalankan jika langkah berhasil atau gagal, dan sejumlah percobaan ulang yang ditetapkan jika gagal.
SQL Agent memungkinkan Anda membuat berbagai jenis langkah pekerjaan.
- Langkah pekerjaan Transact-SQL yang menjalankan satu batch Transact-SQL tunggal terhadap basis data.
- Langkah-langkah perintah OS/PowerShell yang dapat menjalankan skrip OS kustom.
- Langkah-langkah pekerjaan SSIS yang memungkinkan Anda memuat data menggunakan runtime SSIS.
- Langkah-langkah replikasi yang dapat menerbitkan perubahan dari database Anda ke database lain.
Catatan
Untuk informasi selengkapnya, lihat Menggunakan Azure SQL Managed Instance dengan SQL Server Integration Services (SSIS) di Azure Data Factory.
Replikasi transaksional dapat mereplikasi perubahan dari tabel Anda ke database lain di Azure SQL Managed Instance, Azure SQL Database, atau SQL Server. Untuk mengetahui informasinya, lihat Mengonfigurasi replikasi di Azure SQL Managed Instance.
Jenis langkah pekerjaan lainnya saat ini tidak didukung di SQL Managed Instance, seperti Merge Replikasi dan Pembaca Antrian.
Jadwal pekerjaan
Jadwal menentukan kapan tugas berjalan. Lebih dari satu pekerjaan dapat berjalan pada jadwal yang sama, dan lebih dari satu jadwal dapat berlaku untuk pekerjaan yang sama.
Jadwal dapat menentukan kondisi berikut saat tugas berjalan:
- Mulai setiap kali SQL Server Agent dimulai. Pekerjaan diaktifkan setelah setiap failover.
- Mulai satu kali, pada tanggal dan waktu tertentu, yang berguna untuk pelaksanaan pekerjaan secara tertunda.
- Mulailah pada jadwal berulang.
Untuk informasi selengkapnya tentang penjadwalan pekerjaan SQL Agent, lihat Menjadwalkan Pekerjaan.
Catatan
Azure SQL Managed Instance saat ini tidak memungkinkan Anda memulai pekerjaan saat CPU diam.
Pemberitahuan pekerjaan
SQL Agent Jobs memungkinkan Anda untuk mendapatkan pemberitahuan ketika pekerjaan selesai dengan sukses atau gagal. Anda dapat menerima pemberitahuan melalui email.
Jika belum diaktifkan, pertama-tama Anda harus mengonfigurasi fitur Mail Database pada Azure SQL Managed Instance:
GO
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'Database Mail XPs', 1;
GO
RECONFIGURE
Sebagai contoh latihan, siapkan akun email untuk mengirim pemberitahuan email. Tetapkan akun ke profil email yang disebut AzureManagedInstance_dbmail_profile. Untuk mengirim email menggunakan pekerjaan SQL Agent di SQL Managed Instance, harus ada profil yang dinamai AzureManagedInstance_dbmail_profile. Jika tidak, SQL Managed Instance tidak dapat mengirim email melalui Agen SQL.
Catatan
Untuk server email, kami sarankan Anda menggunakan layanan relai Simple Mail Transfer Protocol (SMTP) yang diautentikasi untuk mengirim email. Layanan relai ini biasanya terhubung melalui port 25 atau 587 untuk koneksi Keamanan Lapisan Transportasi (TLS), atau port 465 untuk koneksi SSL, namun Database Mail dapat dikonfigurasi untuk menggunakan port apa pun. Port ini memerlukan aturan keluar baru di kelompok keamanan jaringan instans terkelola Anda. Layanan ini digunakan untuk mempertahankan reputasi IP dan domain untuk meminimalkan kemungkinan domain eksternal menolak pesan Anda atau meletakkannya ke folder SPAM. Pertimbangkan layanan relai SMTP terautentikasi yang sudah ada di server lokal Anda. Di Azure, SendGrid adalah salah satu layanan relai SMTP, tetapi ada yang lain.
Gunakan contoh skrip berikut untuk membuat akun dan profil Email Database, lalu kaitkan bersama-sama:
-- Create a Database Mail account
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = 'SQL Agent Account',
@description = 'Mail account for Azure SQL Managed Instance SQL Agent system.',
@email_address = '$(loginEmail)',
@display_name = 'SQL Agent Account',
@mailserver_name = '$(mailserver)' ,
@username = '$(loginEmail)' ,
@password = '$(password)';
-- Create a Database Mail profile
EXECUTE msdb.dbo.sysmail_add_profile_sp
@profile_name = 'AzureManagedInstance_dbmail_profile',
@description = 'E-mail profile used for messages sent by Managed Instance SQL Agent.';
-- Add the account to the profile
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'AzureManagedInstance_dbmail_profile',
@account_name = 'SQL Agent Account',
@sequence_number = 1;
Uji konfigurasi Email Database melalui T-SQL menggunakan prosedur tersimpan sistem sp_send_dbmail :
DECLARE @body VARCHAR(4000) = 'The email is sent from ' + @@SERVERNAME;
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'AzureManagedInstance_dbmail_profile',
@recipients = 'ADD YOUR EMAIL HERE',
@body = 'Add some text',
@subject = 'Azure SQL Instance - test email';
Anda dapat memberi tahu operator bahwa sesuatu terjadi dengan pekerjaan SQL Agent Anda. Operator menentukan informasi kontak untuk individu yang bertanggung jawab atas pemeliharaan satu atau beberapa instans di SQL Managed Instance. Terkadang, tanggung jawab operator ditetapkan untuk satu individu.
Di lingkungan dengan beberapa instans terkelola SQL atau instans SQL Server, banyak individu dapat berbagi tanggung jawab operator. Operator tidak berisi informasi keamanan, dan tidak menentukan prinsip keamanan. Idealnya, operator bukan individu yang tanggung jawabnya dapat berubah, tetapi grup distribusi email.
Anda dapat membuat operator menggunakan SQL Server Management Studio (SSMS) atau skrip T-SQL yang ditunjukkan dalam contoh berikut:
EXEC msdb.dbo.sp_add_operator
@name=N'AzureSQLTeam',
@enabled=1,
@email_address=N'AzureSQLTeamn@contoso.com';
Konfirmasi keberhasilan atau kegagalan email melalui Log Email Database di SQL Server Management Studio.
Anda dapat memodifikasi pekerjaan Agen SQL apa pun dan menetapkan operator yang diberi tahu melalui email jika pekerjaan selesai, gagal, atau berhasil. Ubah job menggunakan SQL Server Management Studio atau skrip T-SQL berikut:
EXEC msdb.dbo.sp_update_job @job_name=N'Load data using SSIS',
@notify_level_email=3, -- Options are: 1 on succeed, 2 on failure, 3 on complete
@notify_email_operator_name=N'AzureSQLTeam';
Riwayat pekerjaan
SQL Managed Instance saat ini tidak memungkinkan Anda mengubah properti SQL Agent apa pun karena disimpan dalam nilai registri yang mendasar. Ini berarti bahwa opsi untuk menyesuaikan kebijakan retensi Agen untuk rekaman riwayat tugas diatur tetap pada default 1.000 total rekaman, dan maksimum 100 rekaman riwayat per tugas.
Untuk informasi selengkapnya, lihat Melihat riwayat pekerjaan SQL Agent.
Memperbaiki keanggotaan peran database
Jika pengguna yang ditautkan ke login nonsysadmin ditambahkan ke salah satu dari tiga peran tetap database SQL Agent dalam msdb database sistem, terdapat masalah di mana izin eksplisit EXECUTE harus diberikan kepada tiga prosedur tersimpan sistem di dalam database master. Jika masalah ini ditemui, pesan The EXECUTE permission was denied on the object <object_name> (Microsoft SQL Server, Error: 229) kesalahan akan ditampilkan.
Setelah Anda menambahkan pengguna ke peran database tetap Agen SQL (SQLAgentUserRole, SQLAgentReaderRole, atau SQLAgentOperatorRole) di msdb, untuk setiap login pengguna yang ditambahkan ke peran ini, jalankan skrip T-SQL berikut untuk secara eksplisit memberikan EXECUTE izin ke prosedur tersimpan sistem yang tercantum. Contoh ini mengasumsikan bahwa nama pengguna dan nama untuk masuk sama:
USE [master]
GO
CREATE USER [login_name] FOR LOGIN [login_name];
GO
GRANT EXECUTE ON master.dbo.xp_sqlagent_enum_jobs TO [login_name];
GRANT EXECUTE ON master.dbo.xp_sqlagent_is_starting TO [login_name];
GRANT EXECUTE ON master.dbo.xp_sqlagent_notify TO [login_name];
Batasan pekerjaan SQL Agent di Azure SQL Managed Instance
Perlu dicatat perbedaan antara SQL Agent yang tersedia di SQL Server dan sebagai bagian dari SQL Managed Instance. Untuk informasi selengkapnya tentang perbedaan fitur yang didukung antara SQL Server dan SQL Managed Instance, lihat Perbedaan T-SQL antara Azure SQL Managed Instance dan SQL Server.
Beberapa fitur SQL Agent yang tersedia di SQL Server tidak didukung di SQL Managed Instance:
- Pengaturan SQL Agent hanya dapat dibaca.
- Prosedur tersimpan milik sistem
sp_set_agent_propertiestidak didukung.
- Prosedur tersimpan milik sistem
- Mengaktifkan/menonaktifkan SQL Agent saat ini tidak didukung. SQL Agent selalu berjalan.
- Meskipun pemberitahuan didukung sebagian, hal berikut ini tidak didukung:
- Pager tidak didukung.
- NetSend tidak didukung.
- Notifikasi tidak didukung.
- Proksi tidak didukung.
- Eventlog tidak didukung.
- Pemicu jadwal pekerjaan berdasarkan CPU diam tidak didukung.
- Tahapan replikasi penggabungan tidak didukung.
- Pembaca Antrean tidak didukung.
- Analysis Services tidak didukung.
- Menjalankan skrip yang disimpan sebagai file pada disk tidak didukung.
- Mengimpor modul eksternal, seperti dbatool dan dbacheck, tidak didukung.
- PowerShell Core tidak didukung.