Источник данных 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
- Шлюзы: классическая, версия 2
Примечания об использовании
- Сведения о настройке сопоставителя и управлении ими с помощью этой политики см. в разделе "Настройка сопоставителя GraphQL".
- Эта политика вызывается только при разрешении одного поля в типе операции сопоставления в схеме.
Настройка интеграции управляемых удостоверений с Azure SQL
Управляемое удостоверение, назначаемое системой, можно настроить Управление API для доступа к SQL Azure вместо настройки проверки подлинности SQL с помощью имени пользователя и пароля. Дополнительные сведения см. в статье "Настройка проверки подлинности Microsoft Entra" и управление ими с помощью SQL Azure.
Необходимые компоненты
- Включите назначаемое системой управляемое удостоверение в экземпляре управления API.
Включение доступа к идентификатору Записи Майкрософт
Включите проверку подлинности Microsoft Entra для База данных SQL, назначив пользователя Microsoft Entra в качестве администратора сервера.
- На портале перейдите на сервер SQL Azure.
- Выберите Microsoft Entra ID.
- Выберите "Задать администратора" и выберите себя или группу, к которой вы принадлежите.
- Выберите Сохранить.
Назначение ролей
На портале перейдите к ресурсу базы данных SQL Azure.
Выберите Редактор запросов (предварительная версия).
Вход с помощью проверки подлинности Active Directory.
Выполните следующий скрипт 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>
Связанные политики
Связанный контент
Дополнительные сведения о работе с политиками см. в нижеуказанных статьях.
- Руководство. Преобразование и защита API
- Полный перечень операторов политик и их параметров см. в справочнике по политикам.
- Выражения политики
- Настройка или изменение политик
- Повторное использование конфигураций политик
- Репозиторий фрагментов политик
- Создание политик с помощью Microsoft Copilot в Azure