Бөлісу құралы:


Источник данных SQL Azure для сопоставителя

ОБЛАСТЬ ПРИМЕНЕНИЯ: Разработчик | Базовый | Базовая версия 2 | Стандартный | Standard v2 | Премия

Политика sql-data-source сопоставителя настраивает запрос Transact-SQL (T-SQL) в базу данных SQL Azure и необязательный ответ для разрешения данных типа объекта и поля в схеме GraphQL. Схема должна быть импортирована в Управление API как API GraphQL.

Примечание.

Эта политика доступна в предварительной версии. В настоящее время политика не поддерживается на уровне потребления Управление API.

Примечание.

Задайте элементы политики и дочерние элементы в порядке, указанном в правиле политики. Узнайте, как устанавливать или изменять политики службы управления API.

Правило политики

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

Элементы

Имя Описание Обязательное поле
connection-info Указывает подключение к базе данных SQL Azure. Да
include-fragment Вставляет фрагмент политики в определение политики. Если существует несколько фрагментов, добавьте дополнительные include-fragment элементы. No
request Задает запрос T-SQL сопоставителя и необязательные параметры. Да
response При необходимости указывает дочерние политики для настройки ответа из базы данных SQL Azure. Если это не указано, ответ возвращается из SQL Azure в формате JSON. No

Элементы сведений о подключении

Примечание.

За исключением случаев, когда указано, каждый дочерний элемент может быть указан по крайней мере один раз. Укажите элементы в указанном порядке.

Элемент Description Обязательное поле
connection-string Указывает строка подключения SQL Azure. Строка подключения использует проверку подлинности SQL (имя пользователя и пароль) или проверку подлинности Microsoft Entra, если настроено управляемое удостоверение Управление API. Да
include-fragment Вставляет фрагмент политики в определение политики. Если существует несколько фрагментов, добавьте дополнительные include-fragment элементы. No
authentication-certificate Выполняет проверку подлинности с помощью сертификата клиента в sql-запросе сопоставителя. No

Атрибуты строки подключения

Атрибут Description Обязательное поле По умолчанию.
use-managed-identity Логическое значение. Указывает, следует ли использовать управляемое удостоверение, назначаемое системой Управление API, для подключения к базе данных SQL Azure вместо имени пользователя и пароля в строка подключения. Допустимы выражения политики.

Удостоверение должно быть настроено для доступа к базе данных SQL Azure.
No false

Атрибут запроса

Атрибут Description Обязательное поле По умолчанию.
один результат Логическое значение. Указывает, должен ли ответ на запрос возвращать по большей мере одну строку. Допустимы выражения политики. No false

Элементы запроса

Примечание.

Каждый дочерний элемент может быть указан не более одного раза. Укажите элементы в указанном порядке.

Элемент Description Обязательное поле
include-fragment Вставляет фрагмент политики в определение политики. No
set-body Задает текст в sql-запросе сопоставителя. No
инструкция sql- Инструкция T-SQL для запроса к базе данных SQL Azure. Инструкция SQL может включать несколько независимых подстаток, таких как UPDATE, DELETE и SELECT, которые будут выполняться в последовательности. Результаты возвращаются из окончательного подсостоя. Да
parameters Список параметров SQL в parameter подэлементах для запроса. No

Атрибуты параметра

Атрибут Description Обязательное поле По умолчанию.
name Строка. Имя параметра SQL. Да Н/П
sql-type Строка. Тип данных параметра SQL. No Н/П

Элементы ответа

Примечание.

Каждый дочерний элемент может быть указан не более одного раза. Укажите элементы в указанном порядке.

Имя Описание Обязательное поле
include-fragment Вставляет фрагмент политики в определение политики. No
set-body Задает текст в ответе сопоставителя. No
publish-event Публикует событие в одну или несколько подписок, указанных в схеме API GraphQL. No

Использование

Примечания об использовании

  • Сведения о настройке сопоставителя и управлении ими с помощью этой политики см. в разделе "Настройка сопоставителя GraphQL".
  • Эта политика вызывается только при разрешении одного поля в типе операции сопоставления в схеме.

Настройка интеграции управляемых удостоверений с Azure SQL

Управляемое удостоверение, назначаемое системой, можно настроить Управление API для доступа к SQL Azure вместо настройки проверки подлинности SQL с помощью имени пользователя и пароля. Дополнительные сведения см. в статье "Настройка проверки подлинности Microsoft Entra" и управление ими с помощью SQL Azure.

Необходимые компоненты

Включение доступа к идентификатору Записи Майкрософт

Включите проверку подлинности Microsoft Entra для База данных SQL, назначив пользователя Microsoft Entra в качестве администратора сервера.

  1. На портале перейдите на сервер SQL Azure.
  2. Выберите Microsoft Entra ID.
  3. Выберите "Задать администратора" и выберите себя или группу, к которой вы принадлежите.
  4. Выберите Сохранить.

Назначение ролей

  1. На портале перейдите к ресурсу базы данных SQL Azure.

  2. Выберите Редактор запросов (предварительная версия).

  3. Вход с помощью проверки подлинности Active Directory.

  4. Выполните следующий скрипт SQL. Замените <identity-name> именем экземпляра Управление API.

    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
    

Примеры

Пример схемы

Примеры в этом разделе являются сопоставителями для следующей схемы 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
}

Сопоставитель для запроса GraphQL с помощью запроса T-SQL с одним результатом

В следующем примере выполняется разрешение запроса GraphQL путем выполнения одно результирующих запросов T-SQL к серверной базе данных SQL Azure. Строка подключения использует проверку подлинности SQL с именем пользователя и паролем и предоставляется с помощью именованного значения. Ответ возвращается в виде одного объекта JSON, представляющего одну строку.

<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 с преобразованным ответом на запрос с несколькими строками

В следующем примере выполняется разрешение запроса GraphQL с помощью запроса T-SQL к базе данных SQL Azure. Подключение к базе данных использует управляемое удостоверение, назначаемое системой Управление API экземпляра. Удостоверение должно быть настроено для доступа к базе данных SQL Azure.

Доступ к параметру запроса осуществляется с помощью переменной контекста context.GraphQL.Arguments . Ответ запроса с несколькими строками преобразуется с помощью set-body политики с шаблоном 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>

Сопоставитель для изменения GraphQL

В следующем примере устранена мутация GraphQL с помощью инструкции T-SQL INSERT для вставки строки в базу данных SQL Azure. Подключение к базе данных использует управляемое удостоверение, назначаемое системой Управление API экземпляра. Удостоверение должно быть настроено для доступа к базе данных SQL Azure.

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

Дополнительные сведения о работе с политиками см. в нижеуказанных статьях.