Použití GitHub Copilotu v aplikaci SQL Server Management Studio

Dokončeno

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:

  1. Ujistěte se, že máte nainstalovaný SSMS 22 .
  2. Instalace GitHub Copilotu výběrem úlohy AI Assistance v instalačním programu sady Visual Studio
  3. Přihlaste se pomocí účtu GitHubu, který má aktivní předplatné GitHub Copilot.
  4. 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ů.