Azure SQL-adatforrás feloldóhoz
A KÖVETKEZŐKRE VONATKOZIK: Fejlesztő | Alapszintű | Alapszintű v2 | Standard | Standard v2 | Prémium | Prémium v2
A sql-data-source
feloldó szabályzat konfigurál egy Transact-SQL-kérést (T-SQL) egy Azure SQL-adatbázishoz , és opcionális választ a GraphQL-sémák objektumtípusára és mezőjére vonatkozó adatok feloldására. A sémát GraphQL API-ként kell importálni az API Managementbe.
Feljegyzés
Ez a szabályzat előzetes verzióban érhető el. A szabályzat jelenleg nem támogatott az API Management használati szintjén.
Feljegyzés
Állítsa be a szabályzat elemeit és gyermekelemeit a szabályzatutasításban megadott sorrendben. További információ az API Management-szabályzatok beállításáról és szerkesztéséről.
Szabályzatutasítás
<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>
Elemek
Név | Leírás | Kötelező |
---|---|---|
connection-info | Az Azure SQL Database-hez való kapcsolatot adja meg. | Igen |
include-fragment | Szabályzattöredék beszúrása a szabályzatdefinícióba. Ha több töredék is van, adjon hozzá további include-fragment elemeket. |
Nem |
kérés | Megadja a feloldó T-SQL-kérését és az opcionális paramétereket. | Igen |
válasz | Igény szerint gyermekszabályzatokat is megadhat az Azure SQL-adatbázis válaszának konfigurálásához. Ha nincs megadva, a rendszer JSON-ként adja vissza a választ az Azure SQL-ből. | Nem |
kapcsolat-információs elemek
Feljegyzés
A feljegyzett esetek kivételével az egyes gyermekelemek legfeljebb egyszer adhatók meg. Adja meg a felsorolt sorrend elemeit.
Elem | Leírás | Kötelező |
---|---|---|
connection-string | Megadja az Azure SQL-kapcsolati sztring. A kapcsolati sztring SQL-hitelesítést (felhasználónév és jelszó) vagy Microsoft Entra-hitelesítést használ, ha egy API Management által felügyelt identitás van konfigurálva. | Igen |
include-fragment | Szabályzattöredék beszúrása a szabályzatdefinícióba. Ha több töredék is van, adjon hozzá további include-fragment elemeket. |
Nem |
hitelesítés-tanúsítvány | Hitelesítés ügyféltanúsítvány használatával a feloldó SQL-kérésében. | Nem |
kapcsolati sztring attribútumai
Attribútum | Leírás | Kötelező | Alapértelmezett |
---|---|---|---|
use-managed-identity | Logikai. Megadja, hogy az API Management-példány rendszer által hozzárendelt felügyelt identitását használja-e az Azure SQL-adatbázishoz való csatlakozáshoz a felhasználónév és a jelszó helyett a kapcsolati sztring. A szabályzatkifejezések engedélyezettek. Az identitást úgy kell konfigurálni , hogy hozzáférjen az Azure SQL-adatbázishoz. A Microsoft ezt a lehetőséget javasolja a legbiztonságosabb hitelesítési módszerként. |
Nem | false |
request attribútum
Attribútum | Leírás | Kötelező | Alapértelmezett |
---|---|---|---|
egyetlen eredmény | Logikai. Meghatározza, hogy a lekérdezésre adott válasz legfeljebb egy sort ad-e vissza. A szabályzatkifejezések engedélyezettek. | Nem | false |
kérelemelemek
Feljegyzés
Az egyes gyermekelemek legfeljebb egyszer adhatók meg. Adja meg a felsorolt sorrend elemeit.
Elem | Leírás | Kötelező |
---|---|---|
include-fragment | Szabályzattöredék beszúrása a szabályzatdefinícióba. | Nem |
set-body | Beállítja a törzset a feloldó SQL-kérésében. | Nem |
sql-utasítás | T-SQL-utasítás az Azure SQL-adatbázisra irányuló kéréshez. Az SQL-utasítás több független alállapotot is tartalmazhat, például az UPDATE, a DELETE és a SELECT függvényt, amelyek sorozatban lesznek végrehajtva. Az eredmények a végső részállapotból lesznek visszaadva. | Igen |
paraméterek | A kérelem SQL-paramétereinek listája alelemekben parameter . |
Nem |
paraméterattribútumok
Attribútum | Leírás | Kötelező | Alapértelmezett |
---|---|---|---|
név | Húr. Az SQL-paraméter neve. | Igen | n/a |
sql-type | Húr. Az SQL-paraméter adattípusa . | Nem | N.A. |
válaszelemek
Feljegyzés
Az egyes gyermekelemek legfeljebb egyszer adhatók meg. Adja meg a felsorolt sorrend elemeit.
Név | Leírás | Kötelező |
---|---|---|
include-fragment | Szabályzattöredék beszúrása a szabályzatdefinícióba. | Nem |
set-body | Beállítja a törzset a feloldó válaszában. | Nem |
közzétételi esemény | Esemény közzététele a GraphQL API-sémában megadott egy vagy több előfizetésben. | Nem |
Használat
- Szabályzat hatókörei: GraphQL-feloldó
- Átjárók: klasszikus, v2
Használati megjegyzések
- A feloldó ezzel a szabályzattal történő konfigurálásához és kezeléséhez lásd : GraphQL-feloldó konfigurálása.
- Ez a szabályzat csak akkor lesz meghívva, ha a séma egy egyező művelettípusában lévő egyetlen mezőt old fel.
Felügyelt identitásintegráció konfigurálása az Azure SQL-vel
Határozottan javasoljuk, hogy az SQL-hitelesítés felhasználónévvel és jelszóval történő konfigurálása helyett konfiguráljon egy API Management rendszer által hozzárendelt felügyelt identitást az Azure SQL-hez való hozzáféréshez. A háttérben lásd : Microsoft Entra-hitelesítés konfigurálása és kezelése az Azure SQL-lel.
Előfeltételek
- Engedélyezze a rendszer által hozzárendelt felügyelt identitást az API Management-példányban.
A Microsoft Entra ID-hozzáférés engedélyezése
Engedélyezze a Microsoft Entra-hitelesítést az SQL Database-hez egy Microsoft Entra-felhasználó hozzárendelésével a kiszolgáló rendszergazdájaként.
- A portálon nyissa meg az Azure SQL Servert.
- Válassza ki a Microsoft Entra ID.
- Válassza a Rendszergazda beállítása lehetőséget, és válassza ki saját magát vagy azt a csoportot, amelyhez tartozik.
- Válassza a Mentés lehetőséget.
Szerepkörök hozzárendelése
A portálon nyissa meg az Azure SQL-adatbázis-erőforrást.
Válassza a Lekérdezésszerkesztő (előzetes verzió) elemet.
Bejelentkezés Microsoft Entra-hitelesítéssel.
Hajtsa végre a következő SQL-szkriptet. Cserélje le
<identity-name>
az API Management-példány nevére.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
Példák
Példaséma
Az ebben a szakaszban szereplő példák a következő GraphQL-séma feloldói:
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
}
A GraphQL-lekérdezés feloldója egyeredményű T-SQL-kéréssel
Az alábbi példa egy GraphQL-lekérdezést old fel úgy, hogy egy egyeredményes T-SQL-kérést küld egy háttérbeli Azure SQL-adatbázisnak. A kapcsolati sztring felhasználónévvel és jelszóval rendelkező SQL-hitelesítést használ, és névvel ellátott értékkel van megadva. A válasz egyetlen, egyetlen sort képviselő JSON-objektumként lesz visszaadva.
<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>
GraphQL-lekérdezés feloldója átalakított többsoros lekérdezési válaszsal
Az alábbi példa egy GraphQL-lekérdezést old fel T-SQL-lekérdezéssel egy Azure SQL-adatbázisba. Az adatbázishoz való csatlakozás az API Management-példány rendszer által hozzárendelt felügyelt identitását használja. Az identitást úgy kell konfigurálni , hogy hozzáférjen az Azure SQL-adatbázishoz.
A lekérdezési paraméter a context.GraphQL.Arguments
környezeti változóval érhető el. A többsoros lekérdezési válasz a szabályzattal set-body
likvid sablonnal lesz átalakítva.
<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>
A GraphQL-mutáció feloldója
Az alábbi példa egy GraphQL-mutációt old fel egy T-SQL INSERT utasítással egy sor beszúrásához egy Azure SQL-adatbázisba. Az adatbázishoz való csatlakozás az API Management-példány rendszer által hozzárendelt felügyelt identitását használja. Az identitást úgy kell konfigurálni , hogy hozzáférjen az Azure SQL-adatbázishoz.
<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>
Kapcsolódó szabályzatok
Kapcsolódó tartalom
A szabályzatok használatával kapcsolatos további információkért lásd:
- Oktatóanyag: AZ API átalakítása és védelme
- Szabályzathivatkozás a szabályzatutasságok és azok beállításainak teljes listájához
- Házirend-kifejezések
- Házirendek beállítása vagy szerkesztése
- Szabályzatkonfigurációk újrafelhasználása
- Szabályzatrészletek adattára
- Azure API Management policy toolkit
- Szabályzatok létrehozása a Microsoft Copilot használatával az Azure-ban