Verwenden von Copilot in SQL Server Management Studio

Abgeschlossen

SQL Server Management Studio (SSMS) unterstützt zwei KI-gestützte Codierungsassistenten, die Ihnen beim Schreiben, Optimieren und Behandeln von T-SQL-Code helfen. GitHub Copilot bietet allgemeine Programmierunterstützung in mehreren Sprachen, während Copilot datenbankbezogene Vorschläge für Ihre verbundene SQL Server-Instanz bietet.

Beide Tools verwenden große Sprachmodelle, um die Datenbankentwicklung zu beschleunigen. GitHub Copilot glänzt bei der Codevervollständigung und Mustererkennung in Ihrem gesamten Codebestand, während Copilot Ihr Datenbankschema, Ihre Indizes und Statistiken nutzt, um kontextbezogene T-SQL-Unterstützung zu bieten.

Diese KI-Assistenten machen die Datenbankentwicklung barrierefreier und verbessern die Produktivität sowohl für neue als auch erfahrene Entwickler. Ganz gleich, ob Sie Abfragen schreiben, Code debuggen oder die Leistung optimieren, KI-gestützte Unterstützung hilft Ihnen dabei, sich auf die Lösung von Geschäftsproblemen zu konzentrieren, anstatt sich an die Syntax zu erinnern.

Verwenden von GitHub Copilot in SSMS

GitHub Copilot in SSMS bringt KI-gestützte Codevervollständigung und -generierung in Ihren Datenbankentwicklungsworkflow. Als allgemeiner Codierungsassistent hilft GitHub Copilot Ihnen, T-SQL schneller zu schreiben, indem Sie Code während der Eingabe vorschlagen und ganze Abfragen aus Kommentaren in natürlicher Sprache generieren.

Grundlegendes zu GitHub Copilot-Funktionen

GitHub Copilot bietet mehrere Features für die SQL Server-Entwicklung:

  • Abschluss des Inlinecodes: Echtzeitvorschläge beim Schreiben von T-SQL-Code
  • Natürliche Sprache für Code: Schreiben von Kommentaren, die Ihre Absicht beschreiben, Arbeitsabfragen abrufen
  • Mehrzeilige Vorschläge: Generieren vollständiger Abfrageblöcke, Prozeduren oder Funktionen
  • Mustererkennung: Lernen Sie aus Ihrem Codierungsstil und allgemeinen Mustern in Ihrem Arbeitsbereich
  • Kontextfähig: Berücksichtigt den Code, den Sie bereits in der aktuellen Datei geschrieben haben.
  • Unterstützung für mehrere Sprachen: Funktioniert mit T-SQL, PowerShell, Python und anderen Sprachen, die in Datenbankprojekten verwendet werden

GitHub Copilot analysiert Ihre aktuelle Datei, geöffnete Registerkarten und Arbeitsbereiche, um relevante Vorschläge bereitzustellen. Sie stellt zwar keine direkte Verbindung mit Ihrer Datenbank her, erkennt jedoch T-SQL-Syntaxmuster und gängige Methoden für die Datenbankentwicklung.

Aktivieren von GitHub Copilot in SSMS

So verwenden Sie GitHub Copilot in SQL Server Management Studio:

  1. Stellen Sie sicher, dass SSMS 19.3 oder höher installiert ist
  2. Installieren der GitHub Copilot-Erweiterung über das Menü "Erweiterungen"
  3. Melden Sie sich mit Ihrem GitHub-Konto an, das über ein aktives GitHub Copilot-Abonnement verfügt
  4. Konfigurieren Ihrer Einstellungen in Tools > Options > GitHub Copilot

Hinweis

GitHub Copilot erfordert ein kostenpflichtiges Abonnement (Individual, Business oder Enterprise). Einige Organisationen stellen GitHub Copilot für ihre Entwickler als Teil ihrer Entwicklungstools-Lizenz bereit.

Code schreiben mit Inlinevorschlägen

GitHub Copilot bietet Vorschläge während der Eingabe:

-- Start typing a query
SELECT c.CustomerName, 
-- 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

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

Der graue Geistertext zeigt die Vorschläge von Copilot. Drücken Sie Tab, um zu akzeptieren, oder Esc, um abzulehnen.

Generieren gespeicherter Prozeduren und Funktionen

Beschreiben komplexer Datenbankobjekte in Kommentaren:

-- 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 versteht prozedurale Muster und generiert vollständigen ausführbaren Code.

Erkunden des Datenbankschemas

GitHub Copilot hilft beim Schreiben von Abfragen, um Ihre Datenbankstruktur zu erkunden:

-- Show all foreign key relationships for Orders table

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

Lernen Sie aus Ihren Codierungsmustern

GitHub Copilot passt sich im Laufe der Zeit an Ihren Stil an. Wenn Sie konsequent bestimmte Benennungskonventionen, Formatierungen oder Muster verwenden, integriert Copilot sie in Vorschläge:

-- If you typically write your queries like this:
SELECT 
    c.CustomerID
    ,c.CustomerName
    ,c.Email
FROM Customers AS c
WHERE c.IsActive = 1;

-- Copilot learns your style and suggests:
SELECT 
    o.OrderID
    ,o.OrderDate
    ,o.TotalAmount
FROM Orders AS o
WHERE o.Status = 'Completed';

Diese Personalisierung macht Vorschläge natürlicher und reduziert den Bedarf an manueller Formatierung.

Anwenden bewährter Methoden für GitHub Copilot

Maximieren Sie die Effektivität von GitHub Copilot:

Praxis Description
Beschreibende Kommentare schreiben Klare, bestimmte Kommentare erzeugen bessere Codevorschläge
Verwenden aussagekräftiger Namen Beschreibende Tabellen- und Spaltennamen helfen Copilot, den Kontext zu verstehen
Aufschlüsseln komplexer Aufgaben Schreibt mehrere Kommentare für komplexe Verfahren anstelle eines großen Blocks
Alle Vorschläge überprüfen Immer generierten Code auf Richtigkeit und Sicherheit überprüfen
Beispiele bereitstellen Beispieldaten oder erwartete Ausgabe in Kommentare einschließen
Kontext in der Nähe beibehalten Öffnen verwandter Dateien oder Schemas, um Copilot mehr Kontext zu verleihen
Überarbeiten von Vorschlägen Wenn der erste Vorschlag nicht ganz richtig ist, versuchen Sie, Ihren Kommentar neu zu erstellen.

Verwenden von Copilot in SSMS

Copilot in SSMS bietet datenbankbasierte KI-Unterstützung, die eine direkte Verbindung mit Ihrer SQL Server-Instanz herstellt. Im Gegensatz zu GitHub Copilot hat Copilot Zugriff auf Ihr Datenbankschema, Indizes, Statistiken und Metadaten, wodurch kontextbezogenere T-SQL-Vorschläge ermöglicht werden.

Screenshot mit GitHub Copilot in SQL Server Management Studio mit KI-gestütztem Codeabschluss.

Grundlegendes zu Copilot-Funktionen

Copilot bietet datenbankspezifische Features:

  • Schemabezogene Vorschläge: Kennt Ihre genauen Tabellenstrukturen, Spalten und Datentypen
  • Abfrageoptimierung: Analysiert Ausführungspläne und schlägt Leistungsverbesserungen vor
  • Abfragen natürlicher Sprachen: Wandelt Fragen basierend auf Ihrer tatsächlichen Datenbank in T-SQL um.
  • Erläutern von Abfragen: Beschreibt, was vorhandene Abfragen in Nur-Sprache tun
  • Beheben von Fehlern: Stellt kontextbezogene Vorschläge bereit, wenn Abfragen fehlschlagen
  • Indexempfehlungen: Schlägt Indizes basierend auf Ihren Datenbankstatistiken vor

Da Copilot eine Verbindung mit Ihrer Datenbank herstellt, wird Code generiert, der ohne Änderung mit Ihrem spezifischen Schema funktioniert.

Abfrage mit natürlicher Sprache

Stellen Sie Fragen zu Ihren Daten mit einfachem Englisch:

-- Ask Copilot: "Show customers who placed more than 5 orders last month"

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

Copilot kennt Ihre genauen Tabellen- und Spaltennamen und stellt sicher, dass die Abfrage sofort funktioniert.

Optimieren der Abfrageleistung

Copilot analysiert Abfragen und schlägt Verbesserungen vor:

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

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

Verstehen und Beheben von Fehlern

Wenn Abfragen fehlschlagen, erläutert Copilot das Problem und stellt Korrekturen bereit:

-- Query with error:
SELECT CustomerName, SUM(TotalAmount)
FROM Orders;

-- Error: Column 'Orders.CustomerName' is invalid in the select list

-- Ask Copilot: "What's wrong with this query?"

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

Auswählen des richtigen Tools

Beide Tools bieten Wert für die SQL Server-Entwicklung:

Merkmal GitHub Copilot Copilot
Datenbankschema-Sensibilisierung Nein Yes
Unterstützung mehrerer Sprachen Yes T-SQL-Fokus
Abfrageoptimierung Musterbasiert Datenbankspezifisch
Funktioniert außerhalb von SSMS Yes Nein
Erfordert Datenbankverbindung Nein Yes
Subscription GitHub Copilot Copilot

Verwenden Sie GitHub Copilot für allgemeine T-SQL-Entwicklung, multisprachige Projekte und Codeabschluss in der gesamten Codebasis. Verwenden Sie Copilot für datenbankspezifische Aufgaben, bei denen schemabezogene Sensibilisierung, Abfrageoptimierung und direkte Datenbankinteraktion bessere Ergebnisse liefern.

Viele Entwickler verwenden beides: GitHub Copilot für den täglichen Code und Copilot beim Arbeiten mit bestimmten Datenbankinstanzen. Gemeinsam beschleunigen diese KI-Assistenten die Datenbankentwicklung, während Codequalität und Sicherheitsstandards beibehalten werden.