Źródło danych usługi Azure SQL dla narzędzia rozpoznawania problemów
DOTYCZY: Developer | Podstawowa | Podstawowa wersja 2 | Standardowa | Standardowa, wersja 2 | Premia
Zasady rozpoznawania sql-data-source
nazw konfiguruje żądanie języka Transact-SQL (T-SQL) do bazy danych Azure SQL Database i opcjonalną odpowiedź na potrzeby rozpoznawania danych dla typu obiektu i pola w schemacie GraphQL. Schemat należy zaimportować do usługi API Management jako interfejs API GraphQL.
Uwaga
Te zasady są w wersji zapoznawczej. Obecnie zasady nie są obsługiwane w warstwie Zużycie usługi API Management.
Uwaga
Ustaw elementy zasad i elementy podrzędne w kolejności podanej w instrukcji zasad. Dowiedz się więcej na temat ustawiania lub edytowania zasad usługi API Management.
Instrukcja zasad
<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
Nazwa/nazwisko | opis | Wymagania |
---|---|---|
connection-info | Określa połączenie z bazą danych Azure SQL Database. | Tak |
include-fragment | Wstawia fragment zasad w definicji zasad. Jeśli istnieje wiele fragmentów, dodaj dodatkowe include-fragment elementy. |
Nie. |
prosić | Określa żądanie T-SQL narzędzia rozpoznawania i parametry opcjonalne. | Tak |
odpowiedź | Opcjonalnie określa zasady podrzędne, aby skonfigurować odpowiedź z bazy danych Azure SQL Database. Jeśli nie zostanie określona, odpowiedź zostanie zwrócona z usługi Azure SQL jako kod JSON. | Nie. |
Elementy informacji o połączeniu
Uwaga
Z wyjątkiem przypadków, w których zaznaczono, każdy element podrzędny może być określony co najwyżej raz. Określ elementy w podanej kolejności.
Element | opis | Wymagania |
---|---|---|
connection-string | Określa parametry połączenia usługi Azure SQL. Parametry połączenia używa uwierzytelniania SQL (nazwy użytkownika i hasła) lub uwierzytelniania entra firmy Microsoft, jeśli skonfigurowano tożsamość zarządzaną usługi API Management. | Tak |
include-fragment | Wstawia fragment zasad w definicji zasad. Jeśli istnieje wiele fragmentów, dodaj dodatkowe include-fragment elementy. |
Nie. |
uwierzytelnianie certyfikatu | Uwierzytelnia się przy użyciu certyfikatu klienta w żądaniu SQL narzędzia rozpoznawania. | Nie. |
atrybuty parametrów połączenia
Atrybut | opis | Wymagani | Wartość domyślna |
---|---|---|---|
use-managed-identity | Wartość logiczna. Określa, czy używać przypisanej przez system tożsamości zarządzanej wystąpienia usługi API Management do połączenia z bazą danych Azure SQL Database zamiast nazwy użytkownika i hasła w parametry połączenia. Wyrażenia zasad są dozwolone. Tożsamość musi być skonfigurowana do uzyskiwania dostępu do bazy danych Azure SQL Database. |
Nie. | false |
atrybut żądania
Atrybut | opis | Wymagani | Wartość domyślna |
---|---|---|---|
jednokrotny wynik | Wartość logiczna. Określa, czy odpowiedź na zapytanie ma zwracać co najwyżej jeden wiersz. Wyrażenia zasad są dozwolone. | Nie. | false |
elementy żądania
Uwaga
Każdy element podrzędny może być określony co najwyżej raz. Określ elementy w podanej kolejności.
Element | opis | Wymagania |
---|---|---|
include-fragment | Wstawia fragment zasad w definicji zasad. | Nie. |
set-body | Ustawia treść w żądaniu SQL programu resolver. | Nie. |
sql-statement | Instrukcja języka T-SQL dla żądania do bazy danych Azure SQL Database. Instrukcja SQL może zawierać wiele niezależnych podstanów, takich jak UPDATE, DELETE i SELECT, które zostaną wykonane w sekwencji. Wyniki są zwracane z końcowego podstanu. | Tak |
parameters | Lista parametrów SQL w parameter podelementach dla żądania. |
Nie. |
atrybuty parametrów
Atrybut | opis | Wymagani | Wartość domyślna |
---|---|---|---|
name | Struna. Nazwa parametru SQL. | Tak | Nie dotyczy |
sql-type | Struna. Typ danych parametru SQL. | Nie. | Nie dotyczy |
elementy odpowiedzi
Uwaga
Każdy element podrzędny może być określony co najwyżej raz. Określ elementy w podanej kolejności.
Nazwa/nazwisko | opis | Wymagania |
---|---|---|
include-fragment | Wstawia fragment zasad w definicji zasad. | Nie. |
set-body | Ustawia treść w odpowiedzi narzędzia rozpoznawania. | Nie. |
zdarzenie publikowania | Publikuje zdarzenie w co najmniej jednej subskrypcji określonej w schemacie interfejsu API GraphQL. | Nie. |
Użycie
- Zakresy zasad: program GraphQL resolver
- Bramy: klasyczne, wersja 2
Uwagi dotyczące użycia
- Aby skonfigurować program rozpoznawania nazw i zarządzać nim za pomocą tych zasad, zobacz Konfigurowanie narzędzia rozpoznawania języka GraphQL.
- Te zasady są wywoływane tylko w przypadku rozpoznawania pojedynczego pola w pasującym typie operacji w schemacie.
Konfigurowanie integracji tożsamości zarządzanej z usługą Azure SQL
Tożsamość zarządzaną przypisaną przez system usługi API Management można skonfigurować pod kątem dostępu do usługi Azure SQL zamiast konfigurowania uwierzytelniania SQL przy użyciu nazwy użytkownika i hasła. Aby uzyskać informacje na temat tła, zobacz Konfigurowanie uwierzytelniania entra firmy Microsoft i zarządzanie nim za pomocą usługi Azure SQL.
Wymagania wstępne
- Włącz tożsamość zarządzaną przypisaną przez system w wystąpieniu usługi API Management.
Włączanie dostępu do identyfikatora Entra firmy Microsoft
Włącz uwierzytelnianie microsoft Entra w usłudze SQL Database, przypisując użytkownika Microsoft Entra jako administratora serwera.
- W portalu przejdź do serwera Azure SQL.
- Wybierz Microsoft Entra ID.
- Wybierz pozycję Ustaw administratora i wybierz siebie lub grupę, do której należysz.
- Wybierz pozycję Zapisz.
Przypisywanie ról
W portalu przejdź do zasobu bazy danych Azure SQL Database.
Wybierz pozycję Edytor zapytań (wersja zapoznawcza).
Zaloguj się przy użyciu uwierzytelniania usługi Active Directory.
Wykonaj następujący skrypt SQL. Zastąp
<identity-name>
ciąg nazwą wystąpienia usługi 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
Przykłady
Przykładowy schemat
Przykłady w tej sekcji to narzędzia rozpoznawania dla następującego schematu 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
}
Narzędzie rozpoznawania zapytań GraphQL przy użyciu żądania języka T-SQL z pojedynczym wynikiem
Poniższy przykład rozwiązuje zapytanie GraphQL, tworząc jednokrotne żądanie języka T-SQL do bazy danych Azure SQL Database zaplecza. Parametry połączenia używa uwierzytelniania SQL z nazwą użytkownika i hasłem i jest dostarczany przy użyciu nazwanej wartości. Odpowiedź jest zwracana jako pojedynczy obiekt JSON reprezentujący pojedynczy wiersz.
<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>
Narzędzie rozpoznawania zapytań GraphQL z przekształconą odpowiedzią na zapytanie wielowierszowe
Poniższy przykład rozwiązuje zapytanie GraphQL przy użyciu zapytania T-SQL do bazy danych Azure SQL Database. Połączenie z bazą danych używa przypisanej przez system tożsamości zarządzanej wystąpienia usługi API Management. Tożsamość musi być skonfigurowana do uzyskiwania dostępu do bazy danych Azure SQL Database.
Dostęp do parametru zapytania jest uzyskiwany przy użyciu zmiennej kontekstowej context.GraphQL.Arguments
. Odpowiedź zapytania wielowierszowego jest przekształcana przy użyciu set-body
zasad z płynnym szablonem.
<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>
Rozpoznawanie mutacji GraphQL
Poniższy przykład rozwiązuje mutację GraphQL przy użyciu instrukcji T-SQL INSERT w celu wstawienia wiersza bazy danych Azure SQL Database. Połączenie z bazą danych używa przypisanej przez system tożsamości zarządzanej wystąpienia usługi API Management. Tożsamość musi być skonfigurowana do uzyskiwania dostępu do bazy danych Azure SQL Database.
<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>
Powiązane zasady
Powiązana zawartość
Aby uzyskać więcej informacji na temat pracy z zasadami, zobacz:
- Samouczek: przekształcanie i ochrona interfejsu API
- Dokumentacja zasad dla pełnej listy instrukcji zasad i ich ustawień
- Wyrażenia zasad
- Ustawianie lub edytowanie zasad
- Ponowne używanie konfiguracji zasad
- Repozytorium fragmentów zasad
- Tworzenie zasad przy użyciu rozwiązania Microsoft Copilot na platformie Azure