Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
ОБЛАСТЬ ПРИМЕНЕНИЯ: Разработчик | Базовый | Базовая версия 2 | Стандартный | Standard v2 | Премиум | Премиум версии 2
Политика 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>
Элементы
| Имя | Описание | Обязательное поле |
|---|---|---|
| сведения о подключении | Указывает подключение к базе данных SQL Azure. | Да |
| include-fragment | Вставляет фрагмент политики в определение политики. Если существует несколько фрагментов, добавьте дополнительные include-fragment элементы. |
нет |
| просьба | Задает запрос T-SQL сопоставителя и необязательные параметры. | Да |
| ответ | При необходимости указывает дочерние политики для настройки ответа из базы данных SQL Azure. Если это не указано, ответ возвращается из SQL Azure в формате JSON. | нет |
Элементы сведений о подключении
Примечание.
За исключением случаев, когда указано, каждый дочерний элемент может быть указан по крайней мере один раз. Укажите элементы в указанном порядке.
| Элемент | Описание | Обязательное поле |
|---|---|---|
| строка подключения | Указывает строка подключения SQL Azure. Строка подключения использует проверку подлинности SQL (имя пользователя и пароль) или проверку подлинности Microsoft Entra, если настроено управляемое удостоверение Управление API. | Да |
| include-fragment | Вставляет фрагмент политики в определение политики. Если существует несколько фрагментов, добавьте дополнительные include-fragment элементы. |
нет |
| authentication-certificate | Выполняет проверку подлинности с помощью сертификата клиента в sql-запросе сопоставителя. | нет |
Атрибуты строки подключения
| Атрибут | Описание | Обязательное поле | По умолчанию. |
|---|---|---|---|
| use-managed-identity | Логическое значение. Указывает, следует ли использовать управляемое удостоверение, назначаемое системой Управление API, для подключения к базе данных SQL Azure вместо имени пользователя и пароля в строка подключения. Допустимы выражения политики. Удостоверение должно быть настроено для доступа к базе данных SQL Azure. Корпорация Майкрософт рекомендует использовать этот параметр в качестве наиболее безопасного метода проверки подлинности. |
нет | false |
Атрибут запроса
| Атрибут | Описание | Обязательное поле | По умолчанию. |
|---|---|---|---|
| один результат | Логическое значение. Указывает, должен ли ответ на запрос возвращать по большей мере одну строку. Допустимы выражения политики. | нет | false |
Элементы запроса
Примечание.
Каждый дочерний элемент может быть указан не более одного раза. Укажите элементы в указанном порядке.
| Элемент | Описание | Обязательное поле |
|---|---|---|
| include-fragment | Вставляет фрагмент политики в определение политики. | нет |
| set-body | Задает текст в sql-запросе сопоставителя. | нет |
| инструкция sql- | Инструкция T-SQL для запроса к базе данных SQL Azure. Инструкция SQL может включать несколько независимых подстаток, таких как UPDATE, DELETE и SELECT, которые будут выполняться в последовательности. Результаты возвращаются из окончательного подсостоя. | Да |
| Параметры | Список параметров SQL в parameter подэлементах для запроса. |
нет |
Атрибуты параметра
| Атрибут | Описание | Обязательное поле | По умолчанию. |
|---|---|---|---|
| имя | Строка. Имя параметра SQL. | Да | Н/П |
| sql-type | Строка. Тип данных параметра SQL. | нет | Н/П |
Элементы ответа
Примечание.
Каждый дочерний элемент может быть указан не более одного раза. Укажите элементы в указанном порядке.
| Имя | Описание | Обязательное поле |
|---|---|---|
| include-fragment | Вставляет фрагмент политики в определение политики. | нет |
| set-body | Задает текст в ответе сопоставителя. | нет |
| publish-event | Публикует событие в одну или несколько подписок, указанных в схеме API GraphQL. | нет |
Использование
- Области политики: сопоставитель 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.
Выберите Редактор запросов (предварительная версия).
Вход с помощью проверки подлинности Microsoft Entra.
Выполните следующий скрипт 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
- Полный перечень операторов политик и их параметров см. в справочнике по политикам.
- Выражения политики
- Настройка или изменение политик
- Повторное использование конфигураций политик
- Репозиторий фрагментов политик
- Репозиторий игровой площадки политики
- Набор средств политики Управление API Azure
- Получите помощь Copilot для создания, объяснения и устранения неполадок в политике