Použití GitHub Copilotu v aplikaci SQL Server Management Studio
SQL Server Management Studio (SSMS) zahrnuje GitHub Copilot, pomocníka využívajícího AI, který vám pomůže psát, optimalizovat a řešit potíže s kódem T-SQL . GitHub Copilot poskytuje dokončování kódu v editoru dotazů při psaní T-SQL a také poskytuje chat, ve kterém můžete pomocí přirozeného jazyka získat nápovědu k psaní dotazů, kladení otázek ohledně vaší databáze nebo prostředí a získání nápovědy k problémům s SQL. Vždy byste měli používat nejnovější verzi aplikace SSMS (aktuálně SSMS 22), protože se jedná o obecně dostupnou verzi.
GitHub Copilot umožňuje vybrat model a dostupné modely se liší v závislosti na vašem předplatném. GitHub Copilot nabízí dokončování kódu a využívá schéma připojení a databáze k zajištění kontextu modelu a zlepšení odpovědí.
GitHub Copilot zpřístupňuje vývoj databází a zvyšuje produktivitu pro nové i zkušené vývojáře. Ať už píšete dotazy, řešíte problémy s kódem nebo optimalizujete výkon, GitHub Copilot vám pomůže soustředit se na řešení obchodních problémů a nemusíte si pamatovat syntaxi.
Porozumět GitHub Copilot v SQL Server Management Studio
GitHub Copilot v SSMS přináší do pracovního postupu vývoje databáze dokončování, generování a chatování s využitím AI. GitHub Copilot vám pomůže rychleji psát T-SQL tím, že navrhuje kód při psaní, generuje celé dotazy z komentářů v přirozeném jazyce a poskytuje chatovací prostředí, kde můžete klást otázky o databázi a získat pomoc s problémy s SQL.
Prozkoumání možností GitHub Copilotu
GitHub Copilot poskytuje několik funkcí pro vývoj SQL Serveru:
- Doplňování vloženého kódu: Návrhy v reálném čase při psaní kódu T-SQL
- Přirozený jazyk kódu: Psaní komentářů popisujících váš záměr, získání pracovních dotazů
- Víceřádkové návrhy: Generování celých bloků dotazů, procedur nebo funkcí
- Kontextové informace: Rozumí schématu databáze, ke které jste připojení.
GitHub Copilot také nabízí tyto funkce prostřednictvím svého chatu:
- Návrhy s podporou schématu: Zná přesné struktury tabulek, sloupce a datové typy.
- Optimalizace dotazů: Analyzuje dotazy a navrhuje vylepšení výkonu.
- Dotazy v přirozeném jazyce: Převede otázky na T-SQL na základě databáze, ke které jste připojení.
- Vysvětlit dotazy: Popisuje, co existující dotazy dělají v prostém jazyce.
- Oprava chyb: Poskytuje návrhy s podporou kontextu v případech, kdy dotazy selžou.
- Doporučení indexu: Navrhuje indexy na základě chybějících návrhů indexů ve zobrazení dynamické správy nebo v plánu dotazu.
GitHub Copilot také poskytuje pomoc s řešením potíží s výkonem dotazů a databází spolu s odpověďmi na otázky týkající se údržby databáze, osvědčených postupů, konfigurace databáze a serveru a dalších.
Povolení GitHub Copilotu v SSMS
Použití GitHub Copilotu v aplikaci SQL Server Management Studio:
- Ujistěte se, že máte nainstalovaný SSMS 22 .
- Instalace GitHub Copilotu výběrem úlohy AI Assistance v instalačním programu sady Visual Studio
- Přihlaste se pomocí účtu GitHubu, který má aktivní předplatné GitHub Copilot.
- Konfigurujte své preference v Nástroje > Možnosti > GitHub > Copilot a Nástroje > Možnosti > Textový Editor > Vložené Návrhy
Poznámka:
GitHub Copilot vyžaduje předplatné (individuální, obchodní nebo enterprise). Některé organizace poskytují vývojářům GitHub Copilot jako součást licence vývojářské nástroje. Předplatné GitHub Copilot je možné použít také se sadou Visual Studio a VS Code.
Psaní kódu pomocí vložených návrhů
GitHub Copilot nabízí návrhy při psaní:
-- Start typing a query
SELECT c.CustomerName,
-- GitHub Copilot suggests: c.Email, c.Phone, c.City
-- Press Tab to accept
-- Or write a comment describing what you need:
-- Get total sales by product category for last quarter
-- GitHub Copilot generates:
SELECT
p.Category,
SUM(od.Quantity * od.UnitPrice) AS TotalSales
FROM Products p
INNER JOIN OrderDetails od ON p.ProductID = od.ProductID
INNER JOIN Orders o ON od.OrderID = o.OrderID
WHERE o.OrderDate >= DATEADD(QUARTER, -1, GETDATE())
GROUP BY p.Category
ORDER BY TotalSales DESC;
Šedý stínový text zobrazuje návrhy GitHub Copilotu. Stisknutím klávesy Tab ji potvrďte nebo stisknutím klávesy Esc zavřete.
Generování uložených procedur a funkcí
Popis složitých databázových objektů v komentářích:
-- Create a stored procedure to calculate customer lifetime value
-- Parameters: @CustomerID int
-- Returns: @TotalValue money, @OrderCount int, @FirstOrderDate date, @LastOrderDate date
-- GitHub Copilot generates:
CREATE PROCEDURE sp_GetCustomerLifetimeValue
@CustomerID INT
AS
BEGIN
SELECT
@CustomerID AS CustomerID,
SUM(od.Quantity * od.UnitPrice) AS TotalValue,
COUNT(DISTINCT o.OrderID) AS OrderCount,
MIN(o.OrderDate) AS FirstOrderDate,
MAX(o.OrderDate) AS LastOrderDate
FROM Orders o
INNER JOIN OrderDetails od ON o.OrderID = od.OrderID
WHERE o.CustomerID = @CustomerID
GROUP BY o.CustomerID;
END;
GitHub Copilot rozumí procedurálním vzorům a generuje kompletní spustitelný kód.
Prozkoumání schématu databáze
GitHub Copilot pomáhá psát dotazy k prozkoumání struktury databáze:
-- Show all foreign key relationships for Orders table
-- GitHub Copilot suggests:
SELECT
fk.name AS ForeignKeyName,
OBJECT_NAME(fk.parent_object_id) AS TableName,
COL_NAME(fkc.parent_object_id, fkc.parent_column_id) AS ColumnName,
OBJECT_NAME(fk.referenced_object_id) AS ReferencedTable,
COL_NAME(fkc.referenced_object_id, fkc.referenced_column_id) AS ReferencedColumn
FROM sys.foreign_keys fk
INNER JOIN sys.foreign_key_columns fkc ON fk.object_id = fkc.constraint_object_id
WHERE OBJECT_NAME(fk.parent_object_id) = 'Orders'
OR OBJECT_NAME(fk.referenced_object_id) = 'Orders';
Použití vzorů kódování aktuálního editoru
GitHub Copilot se řídí vzory kódování v aktuálním editoru. Pokud používáte konkrétní pojmenovávací konvence, formátování nebo šablony, GitHub Copilot je začlení do návrhů.
-- If you typically write your queries like this:
SELECT
c.CustomerID
,c.CustomerName
,c.Email
FROM Customers AS c
WHERE c.IsActive = 1;
-- GitHub Copilot follows your style and suggests:
SELECT
o.OrderID
,o.OrderDate
,o.TotalAmount
FROM Orders AS o
WHERE o.Status = 'Completed';
Díky této konzistenci se návrhy cítí přirozeněji a snižuje potřebu ručního formátování.
Použití osvědčených postupů pro GitHub Copilot
Maximalizace efektivity GitHub Copilotu:
| Practice | Description |
|---|---|
| Psaní popisných komentářů | Jasné, konkrétní komentáře vytvářejí lepší návrhy kódu |
| Použití smysluplných názvů | Popisné názvy tabulek a sloupců pomáhají GitHubu Copilot pochopit kontext |
| Rozdělení složitých úloh | Psaní více komentářů pro složité procedury místo jednoho velkého bloku |
| Kontrola všech návrhů | Vždy ověřte vygenerovaný kód pro správnost a zabezpečení. |
| Uveďte příklady | Zahrnutí ukázkových dat nebo očekávaného výstupu do komentářů |
| Iterace návrhů | Pokud první návrh není správný, zkuste přeformulovat svou poznámku. |
Dotazování pomocí přirozeného jazyka
Ptejte se na data pomocí prosté angličtiny:
-- Ask GitHub Copilot: "Show customers who placed more than 5 orders last month"
-- GitHub Copilot generates (using your actual schema):
SELECT
c.CustomerID,
c.CustomerName,
c.Email,
COUNT(o.OrderID) AS OrderCount
FROM Customers c
INNER JOIN Orders o ON c.CustomerID = o.CustomerID
WHERE o.OrderDate >= DATEADD(MONTH, -1, GETDATE())
AND o.OrderDate < DATEADD(DAY, 1, EOMONTH(DATEADD(MONTH, -1, GETDATE())))
GROUP BY c.CustomerID, c.CustomerName, c.Email
HAVING COUNT(o.OrderID) > 5
ORDER BY OrderCount DESC;
Vzhledem k tomu, že se GitHub Copilot připojuje k vaší databázi, vygeneruje kód, který funguje s vaším konkrétním schématem.
Optimalizace výkonu dotazů
GitHub Copilot analyzuje dotazy a navrhuje vylepšení:
-- Select a slow query and ask: "How can I make this faster?"
-- Original query:
SELECT c.CustomerName, SUM(od.Quantity * od.UnitPrice) AS Total
FROM Customers c
LEFT JOIN Orders o ON c.CustomerID = o.CustomerID
LEFT JOIN OrderDetails od ON o.OrderID = od.OrderID
WHERE o.OrderDate >= '2024-01-01'
GROUP BY c.CustomerName;
-- GitHub Copilot suggests:
-- 1. Change LEFT JOIN to INNER JOIN (WHERE filters out NULLs anyway)
-- 2. Add covering index: CREATE INDEX IX_Orders_Date ON Orders(OrderDate, CustomerID, OrderID)
-- 3. Consider indexed view for frequent aggregations
-- Optimized query:
SELECT c.CustomerName, SUM(od.Quantity * od.UnitPrice) AS Total
FROM Customers c
INNER JOIN Orders o ON c.CustomerID = o.CustomerID
INNER JOIN OrderDetails od ON o.OrderID = od.OrderID
WHERE o.OrderDate >= '2024-01-01'
GROUP BY c.CustomerName
OPTION (RECOMPILE);
Vysvětlení a oprava chyb
Když dotazy selžou, GitHub Copilot problém vysvětluje a poskytuje opravy:
-- Query with error:
SELECT CustomerName, SUM(TotalAmount)
FROM Orders;
-- Error: Column 'Orders.CustomerName' is invalid in the select list
-- Ask GitHub Copilot: "What's wrong with this query?"
-- GitHub Copilot explains and fixes:
/*
The error occurs because CustomerName is not in an aggregate function or GROUP BY clause.
When using aggregate functions like SUM(), all non-aggregated columns must be grouped.
*/
-- Corrected query:
SELECT CustomerName, SUM(TotalAmount) AS Total
FROM Orders
GROUP BY CustomerName;
Získejte maximum z GitHub Copilotu
Okno chatu GitHub Copilot funguje bez připojení k databázi, ale je mnohem cennější, když máte otevřený editor dotazů a připojený k databázi. GitHub Copilot slouží k obecnému vývoji T-SQL, dokončování kódu v editoru, porozumění vaší databázi a serveru, optimalizaci dotazů a další.
Vývojáři můžou používat GitHub Copilot pro každodenní kódování a zodpovědět konkrétní databázové otázky, což pomáhá zrychlit vývoj databází při zachování kvality kódu a využití osvědčených postupů.