sql_request plugin
Plugin sql_request akan mengirimkan kueri SQL ke titik akhir jaringan SQL Server serta mengembalikan kumpulan baris pertama dalam hasil.
Jika terdapat lebih dari satu set baris yang ditampilkan oleh SQL, hanya yang pertama yang digunakan.
Plugin dipanggil dengan operator evaluate.
Sintaks
evaluatesql_request(ConnectionString,SqlQuery [,SqlParameters [,Options]] ) [:OutputSchema]
Argumen
| Nama | Jenis | Diperlukan | Deskripsi |
|---|---|---|---|
| ConnectionString | string | ✓ | Menunjukkan string koneksi yang mengarah ke titik akhir jaringan SQL Server. Lihat metode autentikasi yang valid dan cara menentukan titik akhir jaringan. |
| SqlQuery | string | ✓ | Menunjukkan kueri yang akan dijalankan terhadap titik akhir SQL. Harus mengembalikan satu atau beberapa kumpulan baris, tetapi hanya yang pertama yang tersedia untuk sisa kueri Kusto. |
| SqlParameters | dinamis | Menahan pasangan nilai kunci untuk diteruskan sebagai parameter bersama dengan kueri. | |
| Opsi | dinamis | Menyimpan pengaturan yang lebih canggih sebagai pasangan kunci-nilai. Saat ini, hanya token yang dapat diatur, untuk meneruskan token akses Azure AD yang disediakan pemanggil yang diteruskan ke titik akhir SQL untuk autentikasi. |
|
| OutputSchema | Nama dan jenis untuk kolom yang diharapkan dari output plugin sql_request. |
Argumen OutputSchema opsional memiliki sintaksis berikut:
(ColumnName:ColumnType [, ...] )
Menentukan argumen ini akan memungkinkan plugin digunakan dalam skenario (seperti kueri lintas kluster) yang sebaliknya akan mencegahnya berjalan, serta memungkinkan beberapa pengoptimalan kueri. Dengan demikian, disarankan untuk selalu menentukannya. Kesalahan muncul jika skema run-time dari set baris pertama yang ditampilkan oleh titik akhir jaringan SQL tidak sesuai dengan skema OutputSchema.
Contoh
Mengirim kueri SQL menggunakan autentikasi terintegrasi Azure AD
Contoh berikut mengirimkan kueri SQL ke database Azure SQL DB. Ini mengambil semua rekaman dari [dbo].[Table], lalu memproses hasilnya pada sisi Kusto. Autentikasi menggunakan kembali token Azure AD pengguna yang memanggil.
Catatan
Contoh ini tidak boleh diambil sebagai rekomendasi untuk memfilter atau memproyeksikan data dengan cara ini. SQL kueri harus dibangun untuk mengembalikan himpunan data sekecil mungkin, karena pengoptimal Kusto tidak berusaha mengoptimalkan kueri antara Kusto dan SQL.
evaluate sql_request(
'Server=tcp:contoso.database.windows.net,1433;'
'Authentication="Active Directory Integrated";'
'Initial Catalog=Fabrikam;',
'select * from [dbo].[Table]')
| where Id > 0
| project Name
Mengirim kueri SQL menggunakan autentikasi Nama Pengguna/Kata Sandi
Contoh berikut identik dengan yang sebelumnya, kecuali bahwa autentikasi SQL dilakukan dengan nama pengguna /kata sandi. Untuk kerahasiaan, kami menggunakan string yang disamarkan di sini.
evaluate sql_request(
'Server=tcp:contoso.database.windows.net,1433;'
'Initial Catalog=Fabrikam;'
h'User ID=USERNAME;'
h'Password=PASSWORD;',
'select * from [dbo].[Table]')
| where Id > 0
| project Name
Mengirim kueri SQL menggunakan token akses Azure AD
Contoh berikut mengirimkan kueri SQL ke database Azure SQL DB yang mengambil semua rekaman dari [dbo].[Table], sambil menambahkan kolom datetime lain, lalu memproses hasilnya di sisi Kusto.
Ini menentukan parameter SQL (@param0) yang akan digunakan dalam kueri SQL.
evaluate sql_request(
'Server=tcp:contoso.database.windows.net,1433;'
'Authentication="Active Directory Integrated";'
'Initial Catalog=Fabrikam;',
'select *, @param0 as dt from [dbo].[Table]',
dynamic({'param0': datetime(2020-01-01 16:47:26.7423305)}))
| where Id > 0
| project Name
Mengirim kueri SQL dengan skema output yang ditentukan kueri
Contoh berikut mengirimkan kueri SQL ke database Azure SQL DB yang mengambil semua rekaman dari [dbo].[Table], sambil hanya memilih kolom tertentu.
Conoth ini menggunakan definisi skema eksplisit yang memungkinkan berbagai pengoptimalan dievaluasi sebelum kueri yang sebenarnya terhadap SQL dijalankan.
evaluate sql_request(
'Server=tcp:contoso.database.windows.net,1433;'
'Authentication="Active Directory Integrated";'
'Initial Catalog=Fabrikam;',
'select Id, Name') : (Id:long, Name:string)
| where Id > 0
| project Name
Autentikasi
Plugin sql_request mendukung tiga metode autentikasi ke titik akhir SQL Server:
Autentikasi terintegrasi Azure AD
Authentication="Active Directory Integrated"
Autentikasi terintegrasi Azure AD adalah metode yang diutamakan. Metode ini membuat pengguna atau aplikasi mengautentikasi melalui Azure AD ke Kusto. Token yang sama kemudian digunakan untuk mengakses titik akhir jaringan SQL Server.
Autentikasi Nama Pengguna/Kata Sandi
User ID=...; Password=...;
Dukungan autentikasi nama pengguna dan kata sandi disediakan saat autentikasi terintegrasi Azure AD tidak dapat dilakukan. Hindari metode ini, jika memungkinkan, karena informasi rahasia dikirim melalui Kusto.
Token akses Azure AD
dynamic({'token': h"eyJ0..."})
Dengan metode autentikasi token akses Azure AD, pemanggil menghasilkan token akses, yang diteruskan oleh Kusto ke titik akhir SQL. String koneksi SQL tidak boleh menyertakan informasi autentikasi seperti Authentication, User ID, atau Password. Sebaliknya, token akses diteruskan sebagai properti token dalam argumen Options plugin sql_request.
Peringatan
String koneksi dan kueri yang menyertakan informasi rahasia atau informasi yang harus dijaga harus dikaburkan agar tidak terlihat dari pelacakan Kusto. Untuk informasi selengkapnya, lihat harfiah string yang disamarkan.
Enkripsi dan validasi server
Properti koneksi berikut dipaksakan saat menyambungkan ke titik akhir jaringan SQL Server, karena alasan keamanan.
Encryptdiatur ketruetanpa syarat.TrustServerCertificatediatur kefalsetanpa syarat.
Akibatnya, SQL Server harus dikonfigurasi dengan sertifikat server SSL/TLS yang valid.
Menentukan titik akhir jaringan
Menentukan titik akhir jaringan SQL sebagai bagian dari string koneksi adalah wajib. Sintaksis yang sesuai adalah:
Server=tcp:FQDN [,Port]
Di mana:
- FQDN adalah nama domain yang sepenuhnya memenuhi syarat dari titik akhir.
- Port adalah port TCP dari titik akhir. Secara default,
1433diasumsikan.
Catatan
Cara lain untuk menentukan titik akhir jaringan tidak didukung.
Prefiks tcp: tidak dapat dihilangkan meskipun dapat dilakukan ketika menggunakan pustaka klien SQL secara terprogram.
Kemampuan ini tidak didukung di Azure Monitor