SQL Server Management Studio'da GitHub Copilot kullanma

Tamamlandı

SQL Server Management Studio (SSMS),T-SQL kodu yazmanıza, iyileştirmenize ve sorunlarını gidermenize yardımcı olan yapay zeka destekli bir yardımcı olan GitHub Copilot'ı içerir. GitHub Copilot, T-SQL yazarken sorgu düzenleyicisinde kod tamamlamaları sağlar ve ayrıca sorgu yazma konusunda yardım almak, veritabanınız veya ortamınız hakkında sorular sormak ve SQL sorunlarıyla ilgili yardım almak için doğal dili kullanabileceğiniz bir sohbet sağlar. Ga sürümü olarak her zaman en son SSMS sürümünü (şu anda SSMS 22) kullanmalısınız.

GitHub Copilot bir model seçmenize olanak tanır ve kullanılabilir modeller aboneliğinize göre farklılık gösterir. GitHub Copilot, kod tamamlama özelliği sunar ve modele bağlam sağlamak ve yanıtları geliştirmek için bağlantı ve veritabanı şemanızdan yararlanıyor.

GitHub Copilot, veritabanı geliştirmeyi daha erişilebilir hale getirir ve hem yeni hem de deneyimli geliştiriciler için üretkenliği artırır. İster sorgu yazıyor, ister kodunuzla ilgili sorunları gideriyor veya performansı iyileştiriyor olun, GitHub Copilot söz dizimini hatırlamak yerine iş sorunlarını çözmeye odaklanmanıza yardımcı olur.

SQL Server Management Studio'da GitHub Copilot'i anlama

SSMS'deki GitHub Copilot , veritabanı geliştirme iş akışınıza yapay zeka destekli kod tamamlama, oluşturma ve sohbet olanağı getirir. GitHub Copilot, siz yazarken kod önererek, doğal dil açıklamalarından tüm sorguları oluşturarak ve veritabanınızla ilgili sorular sorabileceğiniz ve SQL sorunlarıyla ilgili yardım alabileceğiniz bir sohbet deneyimi sağlayarak T-SQL'i daha hızlı yazmanıza yardımcı olur.

GitHub Copilot özelliklerini keşfetme

GitHub Copilot, SQL Server geliştirme için çeşitli özellikler sağlar:

  • Satır içi kod tamamlama: T-SQL kodu yazarken gerçek zamanlı öneriler
  • Doğal dil ile koda: Niyetinizi açıklayan yorumlar yazın ve çalışan sorgular alın.
  • Çok satırlı öneriler: Sorgu bloklarının, yordamların veya işlevlerin tamamını oluşturma
  • Bağlam bilgisi olan: Bağlı olduğunuz veritabanının şemasını anlar

GitHub Copilot sohbeti aracılığıyla da bu özellikleri sunar:

  • Şema kullanan öneriler: Tam tablo yapılarınızı, sütunlarınızı ve veri türlerinizi bilir
  • Sorgu iyileştirme: Sorguları analiz eder ve performans geliştirmeleri önerir
  • Doğal dil sorguları: Bağlı olduğunuz veritabanını temel alarak soruları T-SQL'e dönüştürür
  • Sorguları açıklama: Mevcut sorguların düz dilde ne yaptığını açıklar
  • Hataları düzeltme: Sorgular başarısız olduğunda bağlama duyarlı öneriler sağlar
  • Dizin önerileri: DMV'lerdeki veya sorgu planındaki eksik dizin önerilerini temel alan dizinler önerir

GitHub Copilot ayrıca sorgu ve veritabanı performansı sorunlarını giderme konusunda yardım sağlar ve veritabanı bakımı, en iyi yöntemler, veritabanı ve sunucu yapılandırması ve daha fazlası hakkındaki soruları yanıtlar.

SSMS'de GitHub Copilot'i etkinleştirme

SQL Server Management Studio'da GitHub Copilot kullanmak için:

  1. SSMS 22'nin yüklü olduğundan emin olun
  2. Visual Studio Yükleyicisi'ndeYapay Zeka Yardımı iş yükünü seçerek GitHub Copilot'ı yükleyin
  3. Etkin bir GitHub Copilot aboneliği olan GitHub hesabınızla oturum açın
  4. Araç > Seçenekleri > GitHub > Copilot ve Araçlar > Seçenekleri > Metin Düzenleyicisi > Satır içi Önerileri'nde tercihlerinizi yapılandırma

Uyarı

GitHub Copilot bir abonelik (Bireysel, İş veya Kurumsal) gerektirir. Bazı kuruluşlar, geliştirme araçları lisanslarının bir parçası olarak geliştiricileri için GitHub Copilot sağlar. GitHub Copilot aboneliği Visual Studio ve VS Code ile de kullanılabilir.

Satır içi önerilerle kod yazma

GitHub Copilot, siz yazarken öneriler sağlar:

-- 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;

Gri hayalet metni GitHub Copilot'un önerilerini gösterir. Kabul etmek için Sekme tuşuna veya kapatmak için Esc tuşuna basın.

Saklı yordamlar ve işlevler oluştur

Açıklamalarda karmaşık veritabanı nesnelerini açıklama:

-- 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 yordam desenlerini anlar ve eksiksiz, yürütülebilir kod oluşturur.

Veritabanı şemasını keşfetme

GitHub Copilot, veritabanı yapınızı keşfetmek için sorgu yazmanıza yardımcı olur:

-- 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';

Geçerli düzenleyicinin kodlama desenlerini uygulama

GitHub Copilot, geçerli düzenleyicinizdeki kodlama desenlerini izler. Belirli adlandırma kuralları, biçimlendirme veya desenler kullanıyorsanız GitHub Copilot bunları önerilere ekler:

-- 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';

Bu tutarlılık önerilerin daha doğal görünmesini sağlar ve el ile biçimlendirme gereksinimini azaltır.

GitHub Copilot en iyi yöntemlerini uygulama

GitHub Copilot'un verimliliğini en üst düzeye çıkarın:

Practice Description
Açıklayıcı açıklamalar yazma Açık ve belirli açıklamalar daha iyi kod önerileri oluşturur
Anlamlı adlar kullanma Açıklayıcı tablo ve sütun adları GitHub Copilot'ın bağlamı anlamasına yardımcı olur
Karmaşık görevleri parçalamak Bir büyük blok yerine karmaşık yordamlar için birden çok açıklama yazma
Tüm önerileri gözden geçirin Doğruluk ve güvenlik için oluşturulan kodu her zaman doğrulayın
Örnekler sağlayın Açıklamalara örnek verileri veya beklenen çıkışı ekleme
Öneriler üzerinde yineleme İlk öneri doğru değilse, açıklamanızı yeniden ifade etmeyi deneyin

Doğal dille sorgulama

Düz İngilizce kullanarak verileriniz hakkında sorular sorun:

-- 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;

GitHub Copilot veritabanınıza bağlandığından, kendi şemanızla çalışan bir kod oluşturur.

Sorgu performansını iyileştirme

GitHub Copilot sorguları analiz eder ve iyileştirmeler önerir:

-- 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);

Hataları anlama ve düzeltme

Sorgular başarısız olduğunda GitHub Copilot sorunu açıklar ve düzeltmeler sağlar:

-- 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;

GitHub Copilot'tan en iyi şekilde yararlanın

GitHub Copilot sohbet penceresi veritabanı bağlantısı olmadan çalışır, ancak bir sorgu düzenleyicisi açık ve bir veritabanına bağlı olduğunda çok daha değerlidir. Genel T-SQL geliştirme, düzenleyicide kod tamamlama, veritabanınızı ve sunucunuzu anlama, sorgu iyileştirme ve daha fazlası için GitHub Copilot'ı kullanın.

Geliştiriciler, günlük kodlama ve belirli veritabanı sorularını yanıtlamak için GitHub Copilot'ı kullanarak kod kalitesini korurken ve en iyi uygulamalardan yararlanarak veritabanı geliştirme sürecini hızlandırabilir.