Использование режима агента GitHub Copilot (предварительная версия) в SQL Server Management Studio

Режим агента GitHub Copilot (предварительная версия) в SQL Server Management Studio (SSMS) позволяет задать общую цель на естественном языке, а Copilot будет работать над ней, выполняя запросы, читая файлы и итеративно уточняя собственные результаты, пока задача не будет выполнена или не потребуется ваш ввод.

Замечание

режим агента GitHub Copilot в SQL Server Management Studio (SSMS) в настоящее время находится в предварительной версии.

В отличие от режима Ask, который останавливается после одного ответа, режим агента продолжает выполнять шаги, вызывать инструменты и уточнять подход, пока не достигнет поставленной вами цели. Все запросы и команды выполняются в контексте имени входа и разрешений пользователя, если пользователь пользовательской базы данных или имя входа SQL не указано в передней части базы данных CONSTITUTION.md. Дополнительные сведения см. в статье Контекст выполнения для GitHub Copilot в SQL Server Management Studio.

Important

Режим агента может выполнять запросы и вносить изменения в базу данных от вашего имени. Copilot запрашивает утверждение перед выполнением каждого запроса или команды. Внимательно просмотрите предложенные действия, прежде чем утверждать их. Принудительное управление доступом с помощью наименее привилегированных разрешений SQL Server. Граница безопасности — это принудительное применение разрешений SQL Server, а не система утверждения Copilot.

Режим "Запрос" и "Режим агента"

Используйте следующую таблицу, чтобы решить, какой режим соответствует вашей задаче:

Режим "Запрос" Режим агента
Принцип работы Один ответ на запрос; Вы применяете код вручную Многошаговое выполнение; выполняется итеративно до достижения цели
Выполнение Только запросы для чтения Запросы и команды выполняются с вашего разрешения
Изменения схемы Создает T-SQL, который можно выполнить Может выполнять изменения схемы, если вы их одобрите и у вашей учетной записи есть необходимые разрешения
лучше всего подходит для Изучение идей, просмотр созданного кода перед применением Сложные многофакторные задачи, исследование, анализ и итеративная разработка
Прерывание Один отклик — отменить можно в любое время Вы можете отменить в любое время

Необходимые условия

Использование режима агента

В режиме агента Copilot работает автономно и определяет соответствующий контекст запроса. Режим агента для GitHub Copilot в SSMS использует локальный сервер MCP, sql-tools для интеграции и поставляется с предопределенным набором инструментов.

  1. В SSMS выберите View>GitHub Copilot Chat чтобы открыть окно чата.
  2. В нижней части окна чата разверните раскрывающийся список режима и выберите агент.
  3. В правом нижнем углу окна чата щелкните значок "Сервис", чтобы просмотреть доступные инструменты.
  4. Разверните sql-tools, чтобы увидеть предопределённые инструменты. Наведите курсор на название инструмента, чтобы узнать больше о его назначении. Если вы отмените выбор всех инструментов, режим агента не работает должным образом.
  5. Невозможно отключить список инструментов SSMS.
  6. Введите запрос, описывающий высокий уровень цели, и укажите имя базы данных или сервера, с которым вы работаете. Режим агента не наследует контекст от активного редактора запросов.

Important

Для получения наилучших результатов включите базу данных или сервер в запрос. Это включение снижает неоднозначность и количество вызовов инструментов. Если вы не включаете сведения о подключении, Copilot считывает список подключений, чтобы определить подключение для использования или запрашивает уточнение о том, какую базу данных или сервер следует использовать.

  1. Чтобы отправить запрос, выберите Отправить или нажмите Enter.

    Примеры подсказок для начала работы:

    - In the WideWorldImporters database on the SalesPRD server, analyze the `Sales.usp_QuarterlySalesSummary` stored procedure and its execution plan and tell me how to improve it
    - The AdventureWorks database on the SalesPRD server had high CPU between 1PM and 2PM today, investigate what caused it
    - Find the SQL Agent jobs on the SalesPRD server that failed in the last 24 hours, analyze the history and explain what happened and how to fix the jobs
    
  2. Режим агента может вызвать несколько инструментов для завершения запроса. Например, при чтении сведений о схеме, создании Transact-SQL и анализе результатов. Активное средство отображается в чате по мере выполнения каждого шага.

  3. Когда Copilot готов к выполнению запроса или команды, он приостанавливается и запрашивает утверждение. Просмотрите предлагаемое действие, а затем выберите "Разрешить продолжить" или " Закрыть ", чтобы пропустить этот шаг.

    Область утверждения можно настроить с помощью раскрывающегося списка разрешений :

    Опция Эффект
    Разрешить один раз Утверждает этот однократный вызов
    Разрешить на этот сеанс Утверждает это средство для остальной части текущего сеанса чата
    Разрешить всегда Одобряет этот инструмент для всех последующих вызовов

    Чтобы сбросить параметры утверждения средства, перейдите в раздел Tools>Options>GitHub>Copilot>Tools.

  4. Copilot отслеживает результат каждого шага. Если запрос возвращает ошибку или результат, который не соответствует вашей цели, Copilot изменяет его подход и пытается повторить попытку автоматически.

  5. По завершении задачи Copilot суммирует то, что она сделала. Просмотрите все изменения, примененные к базе данных или редактору запросов.

Общие сведения о средствах режима агента

В режиме агента Copilot могут использовать следующие средства для выполнения запроса:

Замечание

Режим агента работает только с базами данных и объектами, к которым можно получить доступ или подключиться, или с помощью учетных данных в файле базы данных CONSTITUTION.md . У него нет повышенных разрешений сверх тех, которые уже есть у ваших учетных данных.

Чтобы просмотреть средства, доступные в режиме агента, и управлять ими, щелкните значок "Сервис " в окне чата. В зависимости от результата средства Copilot может вызывать другие средства для выполнения общего запроса. Например, если изменение кода T-SQL приводит к синтаксической ошибке, Copilot может изучить другой подход и предложить другое изменение.

Вы также можете расширить режим агента с помощью серверов MCP для подключения Copilot к внешним средствам и службам. Средства, доступные для сервера MCP, не включены автоматически. Их флажки очищаются по умолчанию, и их необходимо выбрать для активации инструментов.

Управление утверждениями инструментов

Copilot запрашивает подтверждение перед выполнением любого запроса или вызовом внешнего инструмента. Этот шаг защищает вас от непреднамеренных изменений. По умолчанию каждое действие требует явного утверждения.

При утверждении средства используйте раскрывающийся список "Разрешить ", чтобы задать сохраняемость:

  • Разрешить для этого сеанса: в текущем сеансе чата нет дополнительных запросов к этому инструменту
  • Разрешить всегда: сохраняется между сеансами для этого инструмента

Чтобы просмотреть и сбросить разрешения, перейдите в раздел Tools>Options>GitHub>Copilot>Tools.

Принятие или отмена правок

Когда режим агента применяет изменения к открытым файлам, в окне чата отображается сводка об общих изменениях . Выберите каждый файл, чтобы просмотреть изменения по отдельности. Вы можете сохранить или отменить изменения, внесенные в каждый раздел кода, с помощью кнопок "Сохранить " и "Отменить ". Кроме того, в списке общих изменений выберите "Сохранить " или "Отменить " для всех изменений, внесенных с момента последнего выбора "Сохранить " или "Отменить".

Представление сводки с несколькими файлами

Начиная с SSMS 22.6, когда Copilot редактирует несколько файлов, вы можете просматривать все изменения в одном представлении сводки, а не переключаться между файлами по отдельности.

  1. После того как Copilot завершит редактирование, выберите кнопку Открыть сводное представление изменений в рабочем наборе Copilot Chat.
  2. Откроется одна вкладка, в которую отображаются все измененные файлы с указанными различиями.
  3. Вы можете принимать или отменять изменения на разных уровнях детализации:
  • Для всех файлов одновременно используйте глобальные кнопки "Сохранить файлы " и " Отменить файлы ".
  • Для каждого файла используются кнопки "Сохранить все изменения " и "Отменить все ".
  • Для каждого отдельного изменения кода используйте Оставить (Ctrl + Y) и Отменить (Ctrl + N).
  1. Используйте элементы управления в левом верхнем углу окна, чтобы:
  • Свернуть все содержимое файла, чтобы просмотреть только заголовки файлов для быстрого обзора
  • Перейдите между блоками диффа, используя следующие и предыдущие кнопки, чтобы быстро перейти к изменениям, можно также выбрать любой файл, чтобы открыть его отдельно и просмотреть его полный контекст.

Прерывание запроса режима агента

Чтобы остановить текущий запрос в режиме агента в любое время, нажмите кнопку "Отмена " в окне чата. При отмене останавливаются все запущенные инструменты и ожидающие выполнения запросы. Все запросы, уже выполненные и подтверждённые, не откатываются автоматически. Проверьте состояние базы данных после отмены многофакторной операции при необходимости.

Scenarios

В следующих примерах показано, как режим агента обрабатывает распространенные задачи SQL Server. Эти примеры — типичные запросы. Адаптируйте их под вашу базу данных и ваши цели.

Создание и проверка хранимой процедуры

Within the WideWorldImporters database on the PRD-Sales server, create a stored procedure named Sales.GetTopCustomers that accepts a date range and a row count, and returns the top N customers by total order value in that date range. Include error handling and test it with sample parameters.

Режим агента считывает схему базы данных для определения соответствующих таблиц, черновики хранимой процедуры, выполняет CREATE PROCEDURE инструкцию, а затем выполняет тестовое выполнение с примерами параметров для проверки выходных данных.

Оптимизация производительности запросов

The query in the active editor, connected to AdventureWorks on the TEST-AW server is running slowly. Analyze its execution plan and suggest options to improve performance.

Режим агента может создать предполагаемый план выполнения для запроса, использовать хранилище запросов для поиска плана или использовать фактический план, если он включен в качестве ссылки. Он определяет антишаблоны в запросе и планы выполнения, включая отсутствующие индексы. Он предлагает конкретные изменения в коде и схеме, включая операторы CREATE INDEX, и может внести эти изменения, если вы это одобрите. Всегда реализуйте изменения в тестовой или среде разработки перед применением их к рабочей базе данных.

Изучение журналов

Analyze the SQL ERRORLOG for the PRD-HR server for the last month and give me a list of errors and problems and solutions for fixing them.

Режим агента проверяет файлы ERRORLOG для экземпляра, создает список выявленных проблем и создает предложения для разрешения.

Аудит и устранение пробелов в разрешениях

Review the permissions for the Reporting role in the CustomerSales database on the PRD-Sales server and identify any tables in the Sales schema that it can't access. Add the missing SELECT permissions.

Режим агента запрашивает представления каталога разрешений, выявляет недостающие разрешения, генерирует операторы GRANT и выполняет их, если вы это одобрите.

Контекст выполнения и разрешения

Все запросы и команды, выполняемые в режиме агента, выполняются в контексте учетной записи, прошедшей проверку подлинности, если вы не назначаете пользователю базы данных или имени входа SQL для GitHub Copilot в CONSTITUTION.md базы данных в качестве agentExecuteAsUser.

  • Если у входа нет разрешения на изменение таблицы, режим агента не может изменить его, даже если вы утвердите предлагаемый запрос.
  • система утверждения Copilot не является границей безопасности. Примените принцип наименьших привилегий в базе данных: предоставьте пользователям только разрешения, необходимые для определенных объектов.
  • Для баз данных, в которых требуется указать пользователя базы данных или учётную запись SQL, см. раздел Контекст выполнения для GitHub Copilot в SQL Server Management Studio.
  • Если для базы данных назначены пользователь базы данных или учетная запись SQL, а пользователь GitHub Copilot не имеет разрешения IMPERSONATE, он не сможет использовать GitHub Copilot для этой базы данных.

По умолчанию режим агента настраивается как READ_ONLY. Если имя входа или учетная запись agentExecuteAsUser имеет разрешения на изменение данных или схемы базы данных, GitHub Copilot по умолчанию не выполняет эти запросы.

Вы можете изменить режим агента на READ_WRITE в файле mcp.json. Однако, если у вашей учетной записи для входа или у учетной записи agentExecuteAsUser нет разрешения на изменение данных или схемы базы данных, такие запросы не выполняются из-за ограничений разрешений безопасности SQL.

Часто задаваемые вопросы

Выполняет ли режим агента запросы автоматически, не спрашивая меня?

No. Режим агента запрашивает утверждение перед выполнением каждого запроса или команды. Вы можете разрешить инструмент для текущего сеанса или всегда уменьшать запросы на утверждение.

Что произойдет, если запрос завершается ошибкой?

Режим агента обнаруживает ошибку, анализирует её и автоматически корректирует свой подход. Предпринимается попытка устранить проблему без вашего дальнейшего участия. Если он не может устранить ошибку после нескольких попыток, он сообщает об ошибке и запрашивает ваше руководство.

Как отличается режим агента от режима ask?

Режим запроса возвращает один ответ и останавливается. Вы решаете, следует ли применять созданный код. Режим агента выполняет несколько шагов автономно, выполняет запросы с утверждением, отслеживает результаты и выполняет итерацию. Используйте режим Ask, когда хотите полностью контролировать каждый шаг; используйте режим Agent для сложных многоэтапных задач, где вы только задаёте направление.

Можно ли использовать режим агента с серверами MCP?

Yes. Для использования средств MCP необходимо быть в режиме агента. См. раздел Использование серверов MCP с GitHub Copilot в SQL Server Management Studio.

Как администратор управляет режимом агента для моей организации?

Администраторы управляют режимом агента с помощью панели мониторинга GitHub Copilot. Дополнительные сведения см. в разделе Admin controls for GitHub Copilot in SQL Server Management Studio.