Sumber data Azure SQL untuk pemecah masalah
BERLAKU UNTUK: Pengembang | Dasar | Dasar v2 | Standar | Standar v2 | Premium | Premium v2
Kebijakan sql-data-source
resolver mengonfigurasi permintaan Transact-SQL (T-SQL) ke database Azure SQL dan respons opsional untuk menyelesaikan data untuk jenis objek dan bidang dalam skema GraphQL. Skema harus diimpor ke API Management sebagai API GraphQL.
Catatan
Kebijakan ini dalam pratinjau. Saat ini, kebijakan tidak didukung di tingkat Konsumsi API Management.
Catatan
Tetapkan elemen kebijakan dan elemen turunan dalam urutan yang disediakan dalam pernyataan kebijakan. Pelajari lebih lanjut cara mengatur atau mengedit kebijakan API Management.
Pernyataan kebijakan
<sql-data-source>
<connection-info>
<connection-string use-managed-identity="true | false">
Azure SQL connection string
</connection-string>
<include-fragment>...include-fragment policy configuration...</include-fragment>
<authentication-certificate>...authentication-certificate policy configuration...</authentication-certificate>
</connection-info>
<include-fragment>...include-fragment policy configuration...</include-fragment>
<request single-result="true | false">
<include-fragment>...include-fragment policy configuration...</include-fragment>
<set-body>...set-body policy configuration...</set-body>
<sql-statement>T-SQL query</sql-statement>
<parameters>
<parameter sql-type="parameter type" name="Query parameter name in @ notation">
"Query parameter value or expression"
</parameter>
<!-- if there are multiple parameters, then add additional parameter elements -->
</parameters>
</request>
<response>
<include-fragment>...include-fragment policy configuration...</include-fragment>
<set-body>...set-body policy configuration...</set-body>
<publish-event>...publish-event policy configuration...</publish-event>
</response>
</sql-data-source>
Elemen
Nama | Deskripsi | Wajib diisi |
---|---|---|
info koneksi | Menentukan koneksi ke database Azure SQL. | Ya |
include-fragment | Menyisipkan fragmen kebijakan dalam definisi kebijakan. Jika ada beberapa fragmen, tambahkan elemen tambahan include-fragment . |
No |
Permintaan | Menentukan permintaan T-SQL resolver dan parameter opsional. | Ya |
respons | Secara opsional menentukan kebijakan anak untuk mengonfigurasi respons dari database Azure SQL. Jika tidak ditentukan, respons dikembalikan dari Azure SQL sebagai JSON. | No |
elemen info koneksi
Catatan
Kecuali jika disebutkan, setiap elemen turunan dapat ditentukan paling banyak sekali. Tentukan elemen dalam urutan yang tercantum.
Elemen | Deskripsi | Wajib diisi |
---|---|---|
connection-string | Menentukan string koneksi Azure SQL. string koneksi menggunakan autentikasi SQL (nama pengguna dan kata sandi) atau autentikasi Microsoft Entra jika identitas terkelola API Management dikonfigurasi. | Ya |
include-fragment | Menyisipkan fragmen kebijakan dalam definisi kebijakan. Jika ada beberapa fragmen, tambahkan elemen tambahan include-fragment . |
No |
sertifikat autentikasi | Mengautentikasi menggunakan sertifikat klien dalam permintaan SQL resolver. | No |
atribut string koneksi
Atribut | Deskripsi | Wajib diisi | Default |
---|---|---|---|
use-managed-identity | Boolean. Menentukan apakah akan menggunakan identitas terkelola yang ditetapkan sistem instans API Management untuk koneksi ke database Azure SQL sebagai pengganti nama pengguna dan kata sandi di string koneksi. Ekspresi kebijakan diizinkan. Identitas harus dikonfigurasi untuk mengakses database Azure SQL. Microsoft merekomendasikan opsi ini sebagai metode autentikasi yang paling aman. |
No | false |
atribut permintaan
Atribut | Deskripsi | Wajib diisi | Default |
---|---|---|---|
hasil tunggal | Boolean. Menentukan apakah respons terhadap kueri diharapkan mengembalikan satu baris paling banyak. Ekspresi kebijakan diizinkan. | No | false |
elemen permintaan
Catatan
Setiap elemen turunan dapat ditentukan paling banyak sekali. Tentukan elemen dalam urutan yang tercantum.
Elemen | Deskripsi | Wajib diisi |
---|---|---|
include-fragment | Menyisipkan fragmen kebijakan dalam definisi kebijakan. | No |
set-body | Mengatur isi dalam permintaan SQL resolver. | No |
sql-statement | Pernyataan T-SQL untuk permintaan ke database Azure SQL. Pernyataan SQL dapat mencakup beberapa substatemen independen seperti UPDATE, DELETE, dan SELECT yang akan dijalankan secara berurutan. Hasil dikembalikan dari substatement akhir. | Ya |
parameter | Daftar parameter SQL, dalam parameter subelemen, untuk permintaan tersebut. |
No |
atribut parameter
Atribut | Deskripsi | Wajib diisi | Default |
---|---|---|---|
nama | String. Nama parameter SQL. | Ya | T/A |
jenis sql | String. Jenis data parameter SQL. | No | T/A |
elemen respons
Catatan
Setiap elemen turunan dapat ditentukan paling banyak sekali. Tentukan elemen dalam urutan yang tercantum.
Nama | Deskripsi | Wajib diisi |
---|---|---|
include-fragment | Menyisipkan fragmen kebijakan dalam definisi kebijakan. | No |
set-body | Mengatur isi dalam respons resolver. | No |
publish-event | Menerbitkan peristiwa ke satu atau beberapa langganan yang ditentukan dalam skema API GraphQL. | No |
Penggunaan
- Cakupan kebijakan: Pemecah masalah GraphQL
- Gateway: klasik, v2
Catatan penggunaan
- Untuk mengonfigurasi dan mengelola resolver dengan kebijakan ini, lihat Mengonfigurasi pemecah masalah GraphQL.
- Kebijakan ini hanya dipanggil saat menyelesaikan satu bidang dalam jenis operasi yang cocok dalam skema.
Mengonfigurasi integrasi identitas terkelola dengan Azure SQL
Kami sangat menyarankan untuk mengonfigurasi identitas terkelola yang ditetapkan sistem API Management untuk akses ke Azure SQL alih-alih mengonfigurasi autentikasi SQL dengan nama pengguna dan kata sandi. Untuk latar belakang, lihat Mengonfigurasi dan mengelola autentikasi Microsoft Entra dengan Azure SQL.
Prasyarat
- Aktifkan identitas terkelola yang ditetapkan sistem di instans API Management Anda.
Mengaktifkan akses ID Microsoft Entra
Aktifkan autentikasi Microsoft Entra ke SQL Database dengan menetapkan pengguna Microsoft Entra sebagai admin server.
- Di portal, buka server Azure SQL Anda.
- Pilih Microsoft Entra ID.
- Pilih Atur admin dan pilih diri Anda atau grup tempat Anda berada.
- Pilih Simpan.
Menetapkan peran
Di portal, buka sumber daya database Azure SQL Anda.
Pilih Editor kueri (pratinjau).
Masuk menggunakan autentikasi Microsoft Entra.
Jalankan skrip SQL berikut. Ganti
<identity-name>
dengan nama instans API Management Anda.CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER [<identity-name>]; ALTER ROLE db_datawriter ADD MEMBER [<identity-name>]; ALTER ROLE db_ddladmin ADD MEMBER [<identity-name>]; GO
Contoh
Contoh skema
Contoh di bagian ini adalah resolver untuk skema GraphQL berikut:
type Family {
id: Int!
name: String!
}
type Person {
id: Int!
name: String!
}
type PersonQueryResult {
items: [Person]
}
type Query {
familyById(familyId: Int!): Family
familyMembers(familyId: Int!): PersonQueryResult
}
type Mutation {
createFamily(familyId: Int!, familyName: String!): Family
}
Resolver untuk kueri GraphQL menggunakan permintaan T-SQL hasil tunggal
Contoh berikut menyelesaikan kueri GraphQL dengan membuat permintaan T-SQL hasil tunggal ke database Azure SQL backend. string koneksi menggunakan autentikasi SQL dengan nama pengguna dan kata sandi dan disediakan menggunakan nilai bernama. Respons dikembalikan sebagai objek JSON tunggal yang mewakili satu baris.
<sql-data-source>
<connection-info>
<connection-string>
{{my-connection-string}}
</connection-string>
</connection-info>
<request single-result="true">
<sql-statement>
SELECT
f.[Id] AS [id]
f.[Name] AS [name]
WHERE @familyId = f.[Id]
</sql-statement>
<parameters>
<parameter name="@familyId">
@(context.GraphQL.Arguments["id"])
</parameter>
</parameters>
</request>
<response />
</sql-data-source>
Pemecah masalah untuk kueri GraphQL dengan respons kueri multi-baris yang diubah
Contoh berikut menyelesaikan kueri GraphQL menggunakan kueri T-SQL ke database Azure SQL. Koneksi ke database menggunakan identitas terkelola yang ditetapkan sistem instans API Management. Identitas harus dikonfigurasi untuk mengakses database Azure SQL.
Parameter kueri diakses menggunakan context.GraphQL.Arguments
variabel konteks. Respons kueri multibaris diubah menggunakan set-body
kebijakan dengan templat cair.
<sql-data-source>
<connection-info>
<connection-string use-managed-identity="true">
Server=tcp:{your_server_name}.database.windows.net,1433;Initial Catalog={your_database_name};
</connection-string>
</connection-info>
<request>
<sql-statement>
SELECT
p.[Id] AS [Id]
p.[FirstName] AS [FirstName]
p.[LastName] AS [LastName]
FROM [Person] p
JOIN [Family] f ON p.[FamilyId] = f.[Id]
WHERE @familyId = f.[Id]
</sql-statement>
<parameters>
<parameter name="@familyId">
@(context.GraphQL.Arguments["id"])
</parameter>
</parameters>
</request>
<response>
<set-body template="liquid">
{
"items": [
{% JSONArray For person in body.items %}
"id": "{{ person.id }}"
"name": "{{ person.firstName }} + "" "" + {{body.lastName}}"
{% endJSONArrayFor %}
]
}
</set-body>
</response>
</sql-data-source>
Penyelesai untuk mutasi GraphQL
Contoh berikut menyelesaikan mutasi GraphQL menggunakan pernyataan T-SQL INSERT untuk menyisipkan baris database Azure SQL. Koneksi ke database menggunakan identitas terkelola yang ditetapkan sistem instans API Management. Identitas harus dikonfigurasi untuk mengakses database Azure SQL.
<sql-data-source>
<connection-info>
<connection-string use-managed-identity="true">
Server=tcp:{your_server_name}.database.windows.net,1433;Initial Catalog={your_database_name};</connection-string>
</connection-info>
<request single-result="true">
<sql-statement>
INSERT INTO [dbo].[Family]
([Id]
,[Name])
VALUES
(@familyId
, @familyName)
SELECT
f.[Id] AS [id],
f.[Name] AS [name]
FROM [Family] f
WHERE @familyId = f.[Id]
</sql-statement>
<parameters>
<parameter name="@familyId">
@(context.GraphQL.Arguments["id"])
</parameter>
<parameter name="@familyName">
@(context.GraphQL.Arguments["name"])
</parameter>
</parameters>
</request>
</sql-data-source>
Kebijakan terkait
Konten terkait
Untuk informasi selengkapnya tentang bekerja dengan kebijakan, lihat:
- Tutorial: Mengubah dan melindungi API Anda
- Referensi Kebijakan untuk daftar lengkap pernyataan kebijakan dan pengaturannya
- Ekspresi kebijakan
- Mengatur atau mengedit kebijakan
- Menggunakan kembali konfigurasi kebijakan
- Repositori cuplikan kebijakan
- Toolkit kebijakan Azure API Management
- Kebijakan penulis menggunakan Microsoft Copilot di Azure