Udostępnij za pośrednictwem


Źródło danych usługi Azure SQL dla narzędzia rozpoznawania problemów

DOTYCZY: Developer | Podstawowa | Podstawowa wersja 2 | Standardowa | Standardowa, wersja 2 | Premium | Premium, wersja 2

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

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łą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.

  1. W portalu przejdź do serwera Azure SQL.
  2. Wybierz Microsoft Entra ID.
  3. Wybierz pozycję Ustaw administratora i wybierz siebie lub grupę, do której należysz.
  4. Wybierz pozycję Zapisz.

Przypisywanie ról

  1. W portalu przejdź do zasobu bazy danych Azure SQL Database.

  2. Wybierz pozycję Edytor zapytań (wersja zapoznawcza).

  3. Zaloguj się przy użyciu uwierzytelniania usługi Active Directory.

  4. 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>

Aby uzyskać więcej informacji na temat pracy z zasadami, zobacz: