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: SQL Server
Azure SQL Managed Instance
Proses klasifikasi pengelola sumber daya dapat menggunakan fungsi pengklasifikasi untuk menempatkan sesi masuk ke kelompok beban kerja. Fungsi pengklasifikasi berisi logika kustom Anda untuk mengklasifikasikan sesi ke dalam grup beban kerja.
Untuk contoh konfigurasi dan pemantauan dan untuk mempelajari praktik terbaik gubernur sumber daya, lihat Tutorial : Contoh konfigurasi gubernur sumber daya dan praktik terbaik.
Klasifikasi
Dengan pengelola sumber daya, setiap sesi baru diklasifikasikan ke dalam kelompok beban kerja. Pengklasifikasi adalah fungsi skalar yang ditentukan pengguna yang Anda buat. Ini berisi logika yang Anda inginkan untuk menetapkan sesi yang masuk ke kelompok beban kerja. Nilai skalar yang dikembalikan oleh pengklasifikasi adalah nama grup beban kerja untuk ditetapkan ke sesi masuk.
Jika gubernur sumber daya diaktifkan dan fungsi pengklasifikasi ditentukan dalam konfigurasi gubernur sumber daya, output fungsi menentukan grup beban kerja yang digunakan untuk sesi baru. Jika tidak, semua sesi pengguna diklasifikasikan ke default dalam grup beban kerja.
Catatan
Grup internal beban kerja hanya digunakan untuk permintaan sistem internal. Anda tidak dapat mengubah kriteria yang digunakan untuk menetapkan permintaan ke dalam internal grup beban kerja, dan Anda tidak dapat secara eksplisit mengklasifikasikan permintaan ke dalam internal grup beban kerja.
Anda harus menyelesaikan langkah-langkah berikut untuk mulai menggunakan fungsi pengklasifikasi:
- Buat fungsi dalam
masterdatabase menggunakan CREATE FUNCTION. Fungsi harus menggunakan pengikatan skema. - Referensikan fungsi dalam konfigurasi gubernur sumber daya menggunakan ALTER RESOURCE GOVERNOR dengan
CLASSIFIER_FUNCTIONparameter . - Buat konfigurasi baru efektif menggunakan
ALTER RESOURCE GOVERNOR RECONFIGURE.
Penting
Upaya koneksi klien mungkin kehabisan waktu jika fungsi pengklasifikasi tidak selesai dalam periode batas waktu koneksi yang dikonfigurasi oleh klien. Penting bagi Anda untuk membuat fungsi pengklasifikasi yang menyelesaikan eksekusi sebelum batas waktu koneksi mungkin terjadi.
Jaga agar fungsi pengklasifikasi tetap sederhana. Hindari menggunakan logika yang kompleks atau memakan waktu. Jika memungkinkan, hindari akses data di pengklasifikasi.
Fungsi pengklasifikasi memiliki karakteristik dan perilaku berikut:
- Fungsi ini didefinisikan dalam cakupan server (dalam
masterdatabase). - Fungsi ini didefinisikan dengan pengikatan skema. Untuk informasi selengkapnya, lihat SCHEMABINDING.
- Fungsi ini dievaluasi untuk setiap sesi baru, bahkan ketika pembagian koneksi diaktifkan.
- Fungsi mengembalikan konteks grup beban kerja untuk sesi tersebut. Sesi ditetapkan ke grup beban kerja yang dikembalikan oleh pengklasifikasi selama masa pakai sesi.
- Jika fungsi mengembalikan
NULL, ,defaultatau nama grup beban kerja yang tidak ada, sesi diberikandefaultkonteks grup beban kerja. Sesi juga diberikandefaultkonteks jika terjadi kegagalan fungsi tersebut karena alasan apa pun. - Setelah fungsi pengklasifikasi ditambahkan atau dihapus menggunakan
ALTER RESOURCE GOVERNOR (WITH CLASSIFIER_FUNCTION = ...)pernyataan, perubahan hanya berlaku setelahALTER RESOURCE GOVERNOR RECONFIGUREpernyataan dijalankan. - Hanya satu fungsi yang dapat ditetapkan sebagai pengklasifikasi pada satu waktu.
- Fungsi pengklasifikasi tidak dapat dimodifikasi atau dihapus kecuali status pengklasifikasinya dihapus menggunakan
ALTER RESOURCE GOVERNOR (WITH CLASSIFIER_FUNCTION = ...)pernyataan yang mengatur nama fungsi keNULLatau ke nama fungsi lain. - Dengan tidak adanya fungsi pengklasifikasi, semua sesi diklasifikasikan
defaultke dalam grup. - Grup beban kerja yang ditentukan dalam output fungsi pengklasifikasi berada di luar cakupan pembatasan pengikatan skema. Misalnya, Anda tidak dapat menghilangkan tabel yang dirujuk dalam fungsi pengklasifikasi, tetapi Anda dapat menghilangkan grup beban kerja meskipun pengklasifikasi mengembalikan nama grup tersebut.
Aktifkan DAC
Untuk tujuan pemecahan masalah dan diagnostik, sebaiknya aktifkan dan pahami Koneksi Administrator Khusus (DAC) secara proaktif. DAC tidak tunduk pada klasifikasi gubernur sumber daya. Anda dapat menggunakan DAC untuk memantau dan memecahkan masalah fungsi pengklasifikasi meskipun konfigurasi gubernur sumber daya Anda tidak berfungsi dan membuat koneksi lain tidak dapat digunakan. Untuk informasi selengkapnya, lihat Koneksi diagnostik untuk administrator database.
Jika DAC tidak tersedia untuk pemecahan masalah, Anda dapat memulai server dalam mode pengguna tunggal. Meskipun koneksi mode pengguna tunggal tidak tunduk pada klasifikasi, itu tidak memberi Anda kemampuan untuk mendiagnosis klasifikasi pengelola sumber daya saat beroperasi.
Setelah terhubung menggunakan DAC atau terhubung dalam mode pengguna tunggal, Anda dapat memodifikasi konfigurasi gubernur sumber daya untuk menghapus fungsi pengklasifikasi yang tidak berfungsi atau menonaktifkan gubernur sumber daya.
Proses masuk
Dalam konteks gubernur sumber daya, proses masuk untuk sesi terdiri dari langkah-langkah berikut:
- Autentikasi masuk.
- Eksekusi pemicu log masuk. Hanya terjadi jika pemicu masuk ada dalam instans.
- Klasifikasi.
Saat klasifikasi dimulai, gubernur sumber daya menjalankan fungsi pengklasifikasi dan menggunakan nilai skalar yang dikembalikan oleh fungsi untuk mengirim permintaan ke grup beban kerja yang cocok.
Anda dapat memantau eksekusi pemicu masuk dan fungsi pengklasifikasi menggunakan tampilan sistem sys.dm_exec_sessions dan sys.dm_exec_requests .
Examples
Fungsi pengklasifikasi gubernur sumber daya dapat menggunakan berbagai logika kustom. Untuk contoh dan panduan lainnya, lihat Tutorial: Contoh konfigurasi gubernur sumber daya dan praktik terbaik.
A. Nama host
Fungsi ini mengklasifikasikan sesi dari nama host tertentu ke dalam grup beban kerja bernama Reports, menggunakan fungsi sistem bawaan HOST_NAME(). Semua sesi lainnya terus diklasifikasikan dalam kelompok beban kerja default.
CREATE FUNCTION dbo.rg_classifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
DECLARE @grp_name sysname = 'default';
IF (HOST_NAME() IN ('reportserver1','reportserver2'))
SET @grp_name = 'Reports';
RETURN @grp_name;
END;
GO
B. Nama pengguna
Fungsi ini mengklasifikasikan sesi dari nama pengguna atau nama akun layanan tertentu ke dalam grup beban kerja bernama Reports, menggunakan fungsi sistem bawaan SUSER_SNAME(). Semua sesi lainnya terus diklasifikasikan dalam grup beban kerja default.
CREATE FUNCTION dbo.rg_classifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
DECLARE @grp_name sysname = 'default';
IF (SUSER_SNAME() IN ('Reporting', 'domain/svc_reporting'))
SET @grp_name = 'Reports';
RETURN @grp_name;
END;
GO
C. Nama aplikasi
Fungsi ini mengklasifikasikan sesi dari nama aplikasi tertentu ke dalam grup beban kerja bernama Adhoc, menggunakan fungsi sistem bawaan APP_NAME(). Semua sesi lainnya terus diklasifikasikan ke dalam grup beban kerja default.
Penting
Aplikasi atau pengguna dapat memberikan nama aplikasi apa pun sebagai bagian dari string koneksi. Pengguna dapat terhubung melalui berbagai aplikasi.
CREATE FUNCTION dbo.rg_classifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
DECLARE @grp_name sysname = 'default';
IF (APP_NAME() IN ('Microsoft SQL Server Management Studio - Query','azdata'))
SET @grp_name = 'Adhoc';
RETURN @grp_name;
END;
GO