Автор: Vivek Johari, What Is GitHub Copilot in SQL Server Management Studio?
GitHub Copilot в SQL Server Management Studio приносит ИИ прямо в SSMS. Он может помочь вам писать T-SQL, объяснять запросы, исправлять ошибки, улучшать SQL, понимать объекты базы данных и исследовать проблемы SQL Server.
Вместо того чтобы всегда писать SQL с нуля, вы можете описать, что хотите, на обычном английском и попросить Copilot помочь.
Например:
Find the top 10 customers by total sales in 2026.
Copilot может помочь превратить это требование в T-SQL.
Это может сэкономить время, особенно при работе с незнакомыми базами данных или сложным SQL.
Однако Copilot — это помощник, а не замена знаниям SQL или администратору баз данных.
Что такое GitHub Copilot в SSMS?
GitHub Copilot в SSMS — это помощник на основе ИИ, интегрированный в SQL Server Management Studio.
Он может помогать с такими задачами, как:
- Написание T-SQL.
- Объяснение T-SQL.
- Исправление ошибок SQL.
- Улучшение запросов.
- Генерация диагностических запросов.
- Изучение объектов базы данных.
- Завершение кода SQL.
- Понимание концепций SQL Server.
- Помощь в устранении проблем с базами данных.
В настоящее время Microsoft документирует поддержку GitHub Copilot в SSMS для SQL Server, Azure SQL Database, Azure SQL Managed Instance, SQL Server на виртуальных машинах Azure и SQL Database в Microsoft Fabric, в зависимости от функции.
Основная идея такова:
Ваш вопрос
↓
GitHub Copilot
↓
SQL / Объяснение / Рекомендация
↓
SSMS
↓
SQL Server
Вместо переключения между SSMS и другим приложением с ИИ вы можете получить помощь ИИ прямо в вашей среде разработки SQL.
Почему GitHub Copilot в SSMS важен
Системы с SQL Server могут становиться сложными.
База данных может содержать:
- Более 500 таблиц.
- Сотни хранимых процедур.
- Тысячи индексов.
- Сложные связи.
- Большие объёмы данных.
- Годы унаследованного SQL.
Разбирательство со всем этим может занимать очень много времени. Copilot может сократить часть этих усилий. Например, вместо того чтобы вручную вспоминать синтаксис для поиска дорогостоящих запросов, вы можете спросить:
Show me the top 10 queries by CPU usage
Или:
Explain why this query might be slow
Или:
Find tables related to customer orders
ИИ предоставляет отправную точку, которую вы можете просмотреть и уточнить.
Это особенно полезно для разработчиков, изучающих SQL Server, и для администраторов, которые часто выполняют повторяющиеся диагностические задачи.
Требования и как начать
В настоящее время Microsoft документирует GitHub Copilot в SSMS 22 или более поздней версии. Вам также нужна учётная запись GitHub с доступом к Copilot. Microsoft предоставляет различные планы Copilot, включая ограниченный бесплатный вариант.
Типичная настройка:
- Установите или обновите SSMS.
- Подключитесь к вашему SQL Server.
- Откройте окно запроса.
- Откройте чат GitHub Copilot.
- Войдите со своей учётной записью GitHub.
- Начните задавать вопросы.
Например:
Explain the tables in this database that are related to orders
Точные доступные функции могут зависеть от вашей версии SSMS и доступа к Copilot.
4. Как Copilot понимает вашу базу данных
Один из полезных аспектов Copilot в SSMS — это контекст базы данных.
При работе в подключённом редакторе запросов Copilot может использовать соответствующий контекст, такой как:
- Выделенный SQL.
- Текущий запрос.
- Подключение к базе данных.
- Контекст SQL Server.
Microsoft документирует эти формы контекста для Copilot в SSMS.
Рассмотрим этот запрос:
SELECT
CustomerID,
SUM(OrderAmount) AS TotalSales
FROM dbo.Orders
GROUP BY CustomerID;
Вы можете выделить запрос и спросить:
Explain this query in simple language
Copilot затем может объяснить, что делает запрос.
Контекст важен, потому что ответ ИИ, основанный только на вашем вопросе, может не понимать структуру вашей фактической базы данных.
Генерация T-SQL из естественного языка
Это одна из самых полезных функций.
Предположим, ваша база данных содержит:
- dbo.Customers
- dbo.Orders
- dbo.OrderDetails
Вы можете спросить:
Find the top 10 customers by total order amount in 2026
Copilot может сгенерировать что-то похожее на:
SELECT TOP (10)
CustomerID,
SUM(OrderAmount) AS TotalOrderAmount
FROM dbo.Orders
WHERE OrderDate >= '20260101'
AND OrderDate < '20270101'
GROUP BY CustomerID
ORDER BY TotalOrderAmount DESC;
Затем вы можете попросить:
Also show the number of orders for each customer
Copilot может изменить запрос:
SELECT TOP (10)
CustomerID,
COUNT(*) AS OrderCount,
SUM(OrderAmount) AS TotalOrderAmount
FROM dbo.Orders
WHERE OrderDate >= '20260101'
AND OrderDate < '20270101'
GROUP BY CustomerID
ORDER BY TotalOrderAmount DESC;
Такой разговорный подход может значительно ускорить разработку SQL.
Однако всегда проверяйте, что сгенерированный запрос соответствует вашей фактической схеме и бизнес-требованиям.
6. Объяснение существующих SQL-запросов
Ещё одна простая, но полезная возможность — объяснение запросов.
Рассмотрим:
SELECT
CustomerID,
SUM(OrderAmount) AS TotalSales
FROM dbo.Orders
WHERE OrderDate >= DATEADD(MONTH, -12, GETDATE())
GROUP BY CustomerID
HAVING SUM(OrderAmount) > 100000
ORDER BY TotalSales DESC;
Вы можете спросить:
Explain this query step by step in simple language
Copilot может объяснить, что запрос:
- Смотрит заказы за последние 12 месяцев.
- Группирует их по клиентам.
- Вычисляет общий объём продаж.
- Оставляет клиентов с продажами выше 100 000.
- Сортирует результаты по продажам.
Это особенно полезно, когда вы наследуете большую или незнакомую кодовую базу SQL.
Исправление и улучшение T-SQL
Copilot также может помочь выявить проблемы SQL.
Например:
SELECT
CustomerID,
SUM(OrderAmount)
FROM dbo.Orders
WHERE YEAR(OrderDate) = 2026
GROUP CustomerID;
Здесь две очевидные проблемы:
Запрос должен использовать:
GROUP BY CustomerIDвместо:
GROUP CustomerID
Вы можете спросить:
Fix this query and explain the errors
Вы также можете попросить Copilot проверить производительность.
Например:
Review this query for non-sargable predicates
Он может выявить:
YEAR(OrderDate)
как то, что стоит исследовать.
Часто предпочтительнее предикат на основе диапазона:
WHERE OrderDate >= '20260101'
AND OrderDate < '20270101'
Это может лучше использовать подходящий индекс по OrderDate. Но окончательное решение должно основываться на фактических планах выполнения и поведении рабочей нагрузки.
Использование Copilot для устранения проблем SQL Server
Copilot может быть полезен при устранении проблем SQL Server.
Например, вы можете спросить:
Generate a query to identify currently running requests ordered by CPU time
Возможный запрос:
SELECT TOP (20)
r.session_id,
r.status,
r.cpu_time,
r.total_elapsed_time,
r.wait_type,
t.text AS QueryText
FROM sys.dm_exec_requests AS r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t
WHERE r.status = 'running'
ORDER BY r.cpu_time DESC;
Затем вы можете спросить:
Generate a query to check whether these sessions are blocked
Copilot может сгенерировать ещё один диагностический запрос.
Это упрощает переход от:
Проблема
↓
Диагностический вопрос
↓
T-SQL
↓
Результаты
↓
Следующее исследование
Однако диагностический запрос — это лишь отправная точка. Настоящее исследование производительности может потребовать DMV, Query Store, планов выполнения, статистики ожиданий, метрик сервера и информации о приложении.
Использование Copilot с Query Store и планами выполнения
Query Store — важная функция производительности SQL Server.
Вы можете попросить Copilot:
Generate a Query Store query to find the queries consuming the most CPU
Например:
SELECT TOP (20)
q.query_id,
qt.query_sql_text,
SUM(rs.avg_cpu_time * rs.count_executions) AS TotalCPU
FROM sys.query_store_query AS q
INNER JOIN sys.query_store_query_text AS qt
ON q.query_text_id = qt.query_text_id
INNER JOIN sys.query_store_plan AS p
ON q.query_id = p.query_id
INNER JOIN sys.query_store_runtime_stats AS rs
ON p.plan_id = rs.plan_id
GROUP BY
q.query_id,
qt.query_sql_text
ORDER BY TotalCPU DESC;
Copilot также может помочь объяснить план выполнения.
Например:
Why is this query using a clustered index scan?
или:
Explain this Key Lookup and tell me what I should investigate
Это может быть ценно при изучении настройки производительности SQL Server.
Тем не менее, планы выполнения следует тщательно проверять. Copilot может объяснить план, но он не заменяет фактическое тестирование производительности.
Завершение кода и предложения следующего редактирования
Copilot также может помочь, пока вы печатаете SQL.
Например, вы начинаете с:
SELECT *
FROM dbo.Cust
Copilot может предложить остальную часть оператора.
SSMS также поддерживает Next Edit Suggestions, которые могут предлагать вероятные изменения на основе ваших недавних правок. Microsoft документирует как завершение кода, так и Next Edit Suggestions как возможности Copilot в SSMS. Это полезно для повторяющихся задач разработки. Вместо того чтобы вручную набирать каждую часть запроса, вы можете принимать полезные предложения и продолжать редактирование.
Что такое инструкции для базы данных?
Инструкции для базы данных позволяют организациям предоставлять Copilot дополнительное руководство о конкретной базе данных. Это может быть полезно, когда технические структуры базы данных не полностью объясняют бизнес-правила. Например, предположим, ваша компания определяет выручку как:
Revenue = completed orders minus refunds
Вы могли бы предоставить Copilot это бизнес-руководство.
Тогда запрос вроде:
Calculate monthly revenue
будет иметь более полезный контекст. Это важно, потому что системы баз данных часто содержат бизнес-правила, которые невозможно понять просто из имён таблиц и столбцов. Microsoft документирует инструкции для базы данных как способ предоставления Copilot контекста и руководства, специфичных для базы данных.
Режим Ask против режима Agent
Существует важная разница между тем, чтобы задать Copilot вопрос, и тем, чтобы позволить ему работать над более крупной задачей.
Режим Ask
Вы задаёте вопрос, и Copilot предоставляет ответ.
Например:
Write a query to find blocking sessions
Copilot генерирует SQL.
Режим Agent
Вы даёте Copilot цель.
Например:
Investigate the current database performance and identify the main queries contributing to CPU usage
Режим Agent может работать через несколько шагов, используя доступные инструменты. В настоящее время Microsoft документирует режим Agent в SSMS как предварительную функцию (preview).
Разницу можно представить так:
Режим Ask
Вопрос
↓
Ответ
Режим Agent
Цель
↓
План
↓
Использование инструментов
↓
Анализ результатов
↓
Продолжение
↓
Итоговый результат
Что такое режим Agent?
Режим Agent выводит Copilot за пределы простого взаимодействия «вопрос-ответ».
Вместо того чтобы спрашивать:
Give me a query to check CPU usage
вы можете сказать:
Investigate the current CPU usage and identify the top queries contributing to it.
Агент потенциально может:
- Определить, какая информация нужна.
- Запустить поддерживаемые инструменты SQL.
- Прочитать результаты.
- Решить, что исследовать дальше.
- Выполнить дополнительные запросы.
- Обобщить выводы.
Microsoft документирует режим Agent как использующий инструменты SQL через сервер sql-tools MCP.
Это важное развитие, потому что оно означает переход от:
ИИ генерирует SQLк:
ИИ использует инструменты SQL для исследования задачи
Практический пример устранения проблем в режиме Agent
Представьте, что вы хотите исследовать использование CPU. Вы можете дать агенту запрос вроде:
Investigate whether any currently running queries are consuming significant CPU.
Identify the top three queries and explain what I should investigate next.
Do not modify data or schema.
Агент потенциально может следовать процессу вроде:
Проверить активные запросы
↓
Найти сессии с высокой нагрузкой CPU
↓
Получить текст SQL
↓
Просмотреть информацию о выполнении
↓
Проанализировать результаты
↓
Предоставить выводы
Предположим, он обнаружит запрос вроде:
SELECT
CustomerID,
SUM(OrderAmount)
FROM dbo.Orders
WHERE YEAR(OrderDate) = 2026
GROUP BY CustomerID;
Он может выявить использование:
YEAR(OrderDate)
как то, что стоит исследовать. Затем он мог бы предложить:
SELECT
CustomerID,
SUM(OrderAmount)
FROM dbo.Orders
WHERE OrderDate >= '20260101'
AND OrderDate < '20270101'
GROUP BY CustomerID;
Администратор всё равно должен проверить рекомендацию с помощью фактического плана выполнения и измерений производительности.
Разрешения и безопасность
Безопасность чрезвычайно важна, когда ИИ подключён к базе данных. Copilot не обходит безопасность SQL Server. Запросы выполняются в рамках разрешений пользователя и настроенного контекста выполнения. Microsoft также подчёркивает, что классификация запросов, сгенерированных ИИ, не должна рассматриваться как граница безопасности. Разрешения SQL Server остаются фактическим средством контроля безопасности. Например, если у пользователя нет разрешения на чтение:
dbo.CustomerSalary
Copilot не следует использовать как способ обойти это ограничение. Тот же принцип применяется к изменениям в рабочей среде. Избегайте предоставления ненужных разрешений, таких как: db_owner когда пользователю нужен только доступ для чтения. Используйте принцип наименьших привилегий везде, где это возможно.
Что Copilot делает хорошо
Copilot может быть очень полезен для:
- Написания SQL — превратить требование в первую версию T-SQL.
- Объяснения SQL — понять незнакомые запросы и хранимые процедуры.
- Исправления синтаксиса — выявить распространённые ошибки SQL.
- Обучения — спросить, почему запрос работает или почему используется определённая функция SQL.
- Устранения проблем — генерировать запросы к DMV и Query Store для исследования.
- Повторяющейся работы — сократить объём SQL, который нужно набирать вручную.
- Завершения кода — получать предложения во время написания SQL.
- Изучения баз данных — использовать контекст базы данных для вопросов о среде.
Наибольшая выгода обычно заключается в экономии времени на повторяющейся и исследовательской работе.
Где Copilot может ошибаться
Copilot мощен, но не всегда корректен. Например, предположим, вы спрашиваете:
Find all active customers
Что означает «активный»?
Это может означать:
- Заказал в течение 30 дней.
- Недавно входил в систему.
- Имеет активную подписку.
- Имеет невыполненный заказ.
ИИ может сделать неудачное предположение. Аналогично, запрос может быть синтаксически корректным, но логически неверным.
Например:
SELECT SUM(OrderAmount)
FROM dbo.Orders;
Это может выглядеть совершенно правильно.
Но что, если ваше бизнес-определение выручки требует исключения:
- Отменённых заказов.
- Возвратов.
- Тестовых транзакций.
- Внутренних заказов.
SQL корректен, но результат может быть неверным. Именно поэтому сгенерированный SQL всегда следует проверять.
Лучшие практики для администраторов и разработчиков
Вот несколько простых правил.
Будьте конкретны. Вместо:
Find sales
используйте:
Find the top 10 customers by net sales for January through June 2026. Exclude refunded orders.
Давайте бизнес-контекст. Объясняйте, что означают такие термины, как «выручка» или «активный клиент».
Просите запросы только для чтения при исследовании. Например:
Generate a read-only query to investigate blocking. Do not modify anything.
Проверяйте сгенерированный SQL. Особенно перед выполнением:
- UPDATE
- DELETE
- INSERT
- MERGE
- ALTER
- DROP
- CREATE
- GRANT
Тестируйте перед рабочей средой. Используйте среду разработки или тестирования везде, где это возможно.
Проверяйте производительность. Не предполагайте, что сгенерированный запрос оптимизирован. Проверяйте:
- Фактический план выполнения.
- CPU.
- Логические чтения.
- Время исполнения.
- Статистику ожиданий.
- Query Store.
Используйте наименьшие привилегии. ИИ не должен получать больше доступа к базе данных, чем необходимо.
GitHub Copilot в SSMS против ChatGPT
GitHub Copilot в SSMS и ChatGPT могут оба помогать с SQL, но они по-разному вписываются в рабочие процессы.
GitHub Copilot в SSMS
Он особенно полезен для:
- Генерации T-SQL.
- Редактирования T-SQL.
- Завершения кода.
- Контекста базы данных.
- Рабочего процесса SSMS.
- Устранения проблем SQL.
- Задач с базой данных на основе агента.
ChatGPT
Он может быть полезен для более широких задач, таких как:
- Архитектура базы данных.
- Изучение SQL Server.
- Подробные объяснения.
- Обсуждения устранения проблем производительности.
- Сравнение подходов к проектированию.
- Техническая документация.
- Изучение сложных решений.
Они могут работать вместе.
Например:
ChatGPT
↓
Понять проблему
↓
Спроектировать подход
↓
Обсудить альтернативы
Copilot в SSMS
↓
Работа с SQL
↓
Генерация и редактирование T-SQL
↓
Работа с контекстом базы данных
Важный момент не в том, какой инструмент ИИ «лучше». А в том, насколько эффективно инструмент вписывается в ваш рабочий процесс.
Заключительные мысли
GitHub Copilot в SQL Server Management Studio приносит ИИ прямо в среду разработки и администрирования SQL Server.
Он может помочь вам:
- Писать SQL.
- Объяснять SQL.
- Исправлять SQL.
- Улучшать SQL.
- Завершать SQL.
- Устранять проблемы SQL Server.
- Изучать базы данных.
Режим Agent идёт дальше, позволяя Copilot работать над более крупной целью с использованием доступных инструментов. Однако режим Agent в настоящее время является предварительной функцией, поэтому организациям следует тщательно его оценить перед использованием в важных рабочих процессах.
Самое важное — использовать Copilot как помощника, а не как непогрешимый авторитет.
Хороший рабочий процесс:
Спросить ↓ Сгенерировать ↓ Проверить ↓ Протестировать ↓ Валидировать ↓ Развернутьа не:
Спросить ↓ Доверять ↓ Запустить в рабочей среде
Для администраторов и разработчиков Copilot может сократить повторяющуюся работу и сделать SQL Server проще для изучения. Но знания SQL по-прежнему важны. Вам нужно понимать планы выполнения, индексы, транзакции, безопасность, параллелизм, моделирование данных и бизнес-требования, чтобы решить, действительно ли сгенерированный ИИ ответ корректен. Будущее SSMS, вероятно, будет более разговорным, более контекстно-зависимым и более поддерживаемым ИИ. GitHub Copilot не заменяет профессионала SQL Server. Он даёт профессионалу SQL Server помощника на основе ИИ внутри SSMS.

Комментариев нет:
Отправить комментарий