Zdroj dat Azure SQL pro překladač
PLATÍ PRO: Vývojář | Základní | Basic v2 | Standardní | Standard v2 | Premium | Premium v2
Zásada sql-data-source
překladače konfiguruje požadavek Transact-SQL (T-SQL) na databázi Azure SQL a volitelnou odpověď na překlad dat pro typ objektu a pole ve schématu GraphQL. Schéma se musí importovat do služby API Management jako rozhraní GraphQL API.
Poznámka:
Tato zásada je ve verzi Preview. V současné době se zásady nepodporují ve vrstvě Consumption služby API Management.
Poznámka:
Nastavte prvky zásad a podřízené prvky v pořadí uvedeném v prohlášení o zásadách. Přečtěte si další informace o tom, jak nastavit nebo upravit zásady služby API Management.
Prohlášení o zásadách
<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>
Elementy
Název | Popis | Povinní účastníci |
---|---|---|
connection-info | Určuje připojení k databázi Azure SQL. | Ano |
include-fragment | Vloží fragment zásady do definice zásady. Pokud existuje více fragmentů, přidejte další include-fragment prvky. |
No |
prosba | Určuje požadavek T-SQL překladače a volitelné parametry. | Ano |
odpověď | Volitelně můžete určit podřízené zásady pro konfiguraci odpovědi z databáze Azure SQL. Pokud není zadáno, odpověď se vrátí z Azure SQL jako JSON. | No |
prvky connection-info
Poznámka:
S výjimkou případů, kdy je uvedeno, může být každý podřízený prvek určen najednou. Zadejte prvky v uvedeném pořadí.
Element (Prvek) | Popis | Povinní účastníci |
---|---|---|
connection-string | Určuje připojovací řetězec Azure SQL. Připojovací řetězec používá ověřování SQL (uživatelské jméno a heslo) nebo ověřování Microsoft Entra, pokud je nakonfigurovaná spravovaná identita služby API Management. | Ano |
include-fragment | Vloží fragment zásady do definice zásady. Pokud existuje více fragmentů, přidejte další include-fragment prvky. |
No |
authentication-certificate | Ověřuje se pomocí klientského certifikátu v požadavku SQL překladače. | No |
atributy připojovacího řetězce
Atribut | Popis | Požaduje se | Výchozí |
---|---|---|---|
use-managed-identity | Logický. Určuje, jestli se má použít spravovaná identita přiřazená systémem instance služby API Management pro připojení k databázi Azure SQL místo uživatelského jména a hesla v připojovací řetězec. Výrazy zásad jsou povolené. Identita musí být nakonfigurovaná pro přístup k databázi Azure SQL. |
No | false |
atribut request
Atribut | Popis | Požaduje se | Výchozí |
---|---|---|---|
jeden výsledek | Logický. Určuje, jestli se očekává, že odpověď na dotaz vrátí maximálně jeden řádek. Výrazy zásad jsou povolené. | No | false |
prvky požadavku
Poznámka:
Každý podřízený prvek může být zadán najednou. Zadejte prvky v uvedeném pořadí.
Element (Prvek) | Popis | Povinní účastníci |
---|---|---|
include-fragment | Vloží fragment zásady do definice zásady. | No |
set-body | Nastaví tělo v požadavku SQL překladače. | No |
příkaz sql | Příkaz T-SQL pro požadavek na databázi Azure SQL. Příkaz SQL může obsahovat několik nezávislých podstavů, jako je UPDATE, DELETE a SELECT, které se budou spouštět postupně. Výsledky se vrátí z konečného dílčího statistiky. | Ano |
parameters | Seznamparametrůchm parameter |
No |
atributy parametru
Atribut | Popis | Požaduje se | Výchozí |
---|---|---|---|
name | Řetězec. Název parametru SQL. | Yes | – |
sql-type | Řetězec. Datový typ parametru SQL. | No | – |
elementy odpovědi
Poznámka:
Každý podřízený prvek může být zadán najednou. Zadejte prvky v uvedeném pořadí.
Název | Popis | Povinní účastníci |
---|---|---|
include-fragment | Vloží fragment zásady do definice zásady. | No |
set-body | Nastaví tělo v odpovědi překladače. | No |
publish-event | Publikuje událost do jednoho nebo více odběrů zadaných ve schématu rozhraní GraphQL API. | No |
Využití
- Obory zásad: Překladač GraphQL
- Brány: Classic, v2
Poznámky k využití
- Informace o konfiguraci a správě překladače pomocí této zásady najdete v tématu Konfigurace překladače GraphQL.
- Tato zásada se vyvolá pouze při překladu jednoho pole v odpovídajícím typu operace ve schématu.
Konfigurace integrace spravované identity s Azure SQL
Spravovanou identitu přiřazenou systémem služby API Management můžete nakonfigurovat pro přístup k Azure SQL místo konfigurace ověřování SQL pomocí uživatelského jména a hesla. Základní informace najdete v tématu Konfigurace a správa ověřování Microsoft Entra pomocí Azure SQL.
Požadavky
- Povolte spravovanou identitu přiřazenou systémem ve vaší instanci služby API Management.
Povolení přístupu k ID Microsoft Entra
Povolte ověřování Microsoft Entra do služby SQL Database přiřazením uživatele Microsoft Entra jako správce serveru.
- Na portálu přejděte na server Azure SQL.
- Vyberte Microsoft Entra ID.
- Vyberte Nastavit správce a vyberte sami sebe nebo skupinu, do které patříte.
- Zvolte Uložit.
Přiřazení rolí
Na portálu přejděte k prostředku databáze Azure SQL.
Vyberte Editor dotazů (Preview).
Přihlaste se pomocí ověřování active directory.
Spusťte následující skript SQL. Nahraďte
<identity-name>
názvem vaší instance služby API Management.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říklady
Příklad schématu
Příklady v této části jsou překladače pro následující schéma GraphQL:
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
}
Překladač pro dotaz GraphQL s využitím požadavku T-SQL s jedním výsledkem
Následující příklad přeloží dotaz GraphQL tak, že provede požadavek T-SQL s jedním výsledkem na back-endovou databázi Azure SQL. Připojovací řetězec používá ověřování SQL s uživatelským jménem a heslem a poskytuje se pomocí pojmenované hodnoty. Odpověď se vrátí jako jeden objekt JSON představující jeden řádek.
<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>
Překladač pro dotaz GraphQL s transformovanou odpovědí dotazu s více řádky
Následující příklad přeloží dotaz GraphQL pomocí dotazu T-SQL na databázi Azure SQL. Připojení k databázi používá spravovanou identitu přiřazenou systémem přiřazenou instancí služby API Management. Identita musí být nakonfigurovaná pro přístup k databázi Azure SQL.
K parametru context.GraphQL.Arguments
dotazu se přistupuje pomocí kontextové proměnné. Odpověď dotazu s více řádky se transformuje pomocí set-body
zásady s šablonou liquid.
<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>
Resolver for GraphQL mutovat
Následující příklad přeloží mutaci GraphQL pomocí příkazu T-SQL INSERT k vložení řádku databáze Azure SQL. Připojení k databázi používá spravovanou identitu přiřazenou systémem přiřazenou instancí služby API Management. Identita musí být nakonfigurovaná pro přístup k databázi 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>
Související zásady
Související obsah
Další informace o práci se zásadami najdete v tématech:
- Kurz: Transformace a ochrana rozhraní API
- Referenční informace o zásadách pro úplný seznam prohlášení o zásadách a jejich nastavení
- Výrazy zásad
- Nastavení nebo úprava zásad
- Opakované použití konfigurací zásad
- Úložiště fragmentů zásad
- Sada nástrojů zásad služby Azure API Management
- Vytváření zásad pomocí Microsoft Copilotu v Azure