Schnellstart: Verwenden Sie benutzerdefinierte Anweisungen, um GitHub Copilot an Ihre T-SQL-Konventionen anzupassen

Benutzerdefinierte Anweisungen bringen GitHub Copilot die Standards Ihres Teams bei, sodass jede Antwort – ob aus dem Fragemodus, dem Agentmodus oder aus Inline-Vervollständigungen – Ihren Konventionen für Benennung, Formatierung und Datentypen entspricht. Eine einzelne Markdown-Datei, die auf .sql Dateien ausgerichtet ist, ändert generische Transact-SQL (T-SQL)-Ausgabe in ausgerichtete Ausgabe, die Ihrem Projekt entspricht.

Tip

Benutzerdefinierte Anweisungen gelten für alle GitHub Copilot-Oberflächen, die dem applyTo-Glob entsprechen, einschließlich Fragemodus, Bearbeitungsmodus, Agentmodus und Inline-Vervollständigungen. Richten Sie sie einmal pro Sprache oder Domäne ein.

Wichtige Erkenntnisse

  • Benutzerdefinierte Anweisungen finden Sie in .github/instructions/<name>.instructions.md in Ihrem Arbeitsbereich.
  • Der applyTo Frontmatter-Schlüssel ordnet jede Datei einem Glob-Muster zu, beispielsweise **/*.sql.
  • GitHub Copilot fügt übereinstimmende Anweisungen automatisch in jede Anforderung ein. Kein Slash-Befehl nötig.
  • Ohne benutzerdefinierte Anweisungen verwendet GitHub Copilot standardmäßig allgemeine Konventionen (PascalCase, INT Primärschlüssel, keine Dateivorlagen).

Voraussetzungen

  • Visual Studio Code mit installierter MSSQL-Erweiterung.
  • Ein aktives GitHub Copilot-Abonnement.
  • Ein Arbeitsbereichsordner. Diese Schnellstartanleitung erstellt neue Dateien in .github/instructions/.

Was sind benutzerdefinierte Anweisungen?

Benutzerdefinierte Anweisungen sind Markdown-Dateien, die GitHub Copilot liest und auf jede Anfrage anwendet, die einem Glob-Muster entspricht. Visual Studio Code unterstützt sie von Haus aus. Die MSSQL-Erweiterung erfordert keine zusätzliche Konfiguration.

Jedes ernstzunehmende KI-Programmierwerkzeug unterstützt inzwischen eine Variante dieses Musters: Cursor verwendet .cursorrules, OpenAI Codex verwendet AGENTS.md, Claude Code von Anthropic verwendet CLAUDE.md. GitHub Copilot in Visual Studio Code verwendet .github/instructions/*.instructions.md. Der Vorteil besteht darin, dass Sie mehrere Anweisungen für verschiedene Dateitypen im selben Repository haben können.

Allgemeine Visual Studio Code Dokumentation zu diesem Feature finden Sie unter Anpassen von KI-Antworten in Visual Studio Code.

Warum benutzerdefinierte Anweisungen für T-SQL wichtig sind

Modernes GitHub Copilot generiert von Haus aus beeindruckendes T-SQL: NVARCHAR Spalten, DATETIME2 Zeitstempel, sinnvolle Benennung von Constraints. Standardmäßig ist es jedoch auf Konventionen eingestellt, die Ihr Team möglicherweise nicht nutzt.

Ohne benutzerdefinierte Anweisungen arbeitet GitHub Copilot in der Regel:

  • Verwendet PascalCase für Tabellen- und Spaltennamen (UserID, CreatedAt) anstelle der camelCase oder snake_case Ihres Teams.
  • Verwendet INT Primärschlüssel anstelle von BIGINT.
  • Lässt Dateiheader-Vorlagen, SET ANSI_NULLS ON und SET QUOTED_IDENTIFIER ON aus.
  • Überspringt die Schemaqualifizierung (CREATE TABLE users anstelle von CREATE TABLE dbo.users).
  • Generiert automatisch benannte Einschränkungen , anstatt dem PK_tableName / FK_child_parent Muster zu folgen.

Keine dieser Standardwerte ist falsch. Sie sind einfach nicht Ihre. Benutzerdefinierte Anweisungen beheben all dies mit einer einzelnen Datei.

Erstellen einer T-SQL-Konventionsdatei

In diesem Beispiel wird eine Anleitungsdatei erstellt, die die CamelCase-Benennung, schemaqualifizierung, Überwachungsspalten und eine Dateiheadervorlage erzwingt.

Schritt 1: Verwenden von GitHub Copilot zum Erstellen der Datei

  1. Öffnen Sie in Visual Studio Code die GitHub-Copilot Chat Ansicht.
  2. Wählen Sie das Symbol „Einstellungen“ (Zahnrad) aus und dann Anweisungen & Regeln>Neue Anweisungsdatei.
  3. Wenn Sie zur Eingabe eines Speicherorts aufgefordert werden, wählen Sie .github/instructions.
  4. Wenn Sie zur Eingabe eines Dateinamens aufgefordert werden, geben Sie tsql-conventions.

Visual Studio Code erstellt .github/instructions/tsql-conventions.instructions.md mit vorgefertigtem Front Matter.

Schritt 2: Hinzufügen Ihrer Konventionen

Ersetzen Sie den Gerüstinhalt durch die T-SQL-Standards Ihres Teams. In der folgenden Vorlage werden Benennungen, Datentypen, Überwachungsspalten, Schemaqualifizierung, Einschränkungsbenennung und unzulässige Muster behandelt.

---
applyTo: "**/*.sql"
---

# T-SQL conventions

## Database environment
- Local development: [!INCLUDE [sssql25-md](../../../includes/sssql25-md.md)] running in a Docker container
- Cloud / production: Azure SQL Database
- All T-SQL must be compatible with both environments

## File template
Every .sql file MUST begin with this header block:

-- ================================================================
-- Author:      <your name>
-- Created:     <YYYY-MM-DD>
-- Purpose:     <brief description>
-- ================================================================
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO

## T-SQL conventions
- Use camelCase for ALL identifiers: table names, column names, parameters
- Use NVARCHAR for all text columns - never VARCHAR
- Use BIGINT for all primary keys and foreign keys - never INT
- Every table MUST include these audit columns:
    createdAt  DATETIME2(7) NOT NULL DEFAULT GETUTCDATE()
    updatedAt  DATETIME2(7) NOT NULL DEFAULT GETUTCDATE()
- Always schema-qualify all objects: dbo.tableName
- Use clustered primary keys on all tables
- Foreign key column names follow the pattern: [referencedTable]Id
- Never use SELECT * - always name columns explicitly

## Constraint naming conventions
- Primary keys: PK_tableName
- Foreign keys: FK_childTable_parentTable
- Unique constraints: UQ_tableName_columnName
- Check constraints: CK_tableName_columnName
- Default constraints: DF_tableName_columnName

## What to avoid
- Do NOT generate stored procedures unless I explicitly ask for one
- Do NOT use deprecated T-SQL syntax (no *= for joins, no non-ANSI joins)
- Do NOT generate object-relational mapping (ORM) models or application code

Schritt 3: Speichern der Datei

GitHub Copilot nimmt Anweisungendateien auf, sobald Sie speichern. Es gibt keinen Neulade- oder Konfigurationsschritt.

Sehen Sie sich den Vorher-/Nachher-Vergleich an

Um die Auswirkungen benutzerdefinierter Anweisungen anzuzeigen, führen Sie die gleiche Eingabeaufforderung in GitHub Copilot Chat vor und nach dem Hinzufügen der Datei aus.

Vorher: keine benutzerdefinierten Anweisungen

Fragen Sie GitHub Copilot in einem Arbeitsbereich ohne .github/instructions/-Ordner:

Create a users table and a projects table for a task management app.

Typische Ausgabe:

  • CREATE TABLE Users (keine Schemaqualifizierung, PascalCase)
  • UserID INT IDENTITY(1,1) PRIMARY KEY
  • Kein Datei-Headerblock, keine SET-Anweisungen
  • Automatisch benannte oder inkonsistente Einschränkungen

Nachher: mit benutzerdefinierten Anweisungen

Fragen Sie im Arbeitsbereich, in dem Sie erstellt haben tsql-conventions.instructions.md, die gleiche Eingabeaufforderung:

Create a users table and a projects table for a task management app.

Erwartete Ausgabe:

  • Vollständiger Dateikopf mit Autor, Datum, Zweck, SET ANSI_NULLS ON, SET QUOTED_IDENTIFIER ON
  • CREATE TABLE dbo.users (schemqualifiziert, camelCase)
  • userId BIGINT IDENTITY(1,1) PRIMARY KEY
  • createdAt und updatedAt Überwachungsspalten
  • Benannte Einschränkungen: PK_users, UQ_users_email, FK_projects_usersDF_users_createdAt

Dasselbe Modell, dieselbe Eingabeaufforderung, dieselbe GitHub Copilot. Die Anweisungendatei hat die Arbeit ausgeführt.

Überprüfen, ob benutzerdefinierte Anweisungen angewendet werden

Um zu prüfen, ob GitHub Copilot Ihre Anweisungsdatei auswertet, überprüfen Sie die Debugausgabe.

  1. Wählen Sie in Visual Studio Code die Option "Ausgabe anzeigen"> aus.
  2. Wählen Sie in der Dropdownliste des Ausgabekanals GitHub Copilot oder GitHub Copilot Chat aus.
  3. Senden Sie eine Eingabeaufforderung, und schauen Sie sich den Ausgabekanal an. Die vollständige Anforderungsnutzlast, einschließlich Ihrer benutzerdefinierten Anweisungen, wird im Protokoll angezeigt.

Diese Debugansicht ist die Quelle der Wahrheit. Wenn die Ausgabe ihre Anweisungen nicht enthält, überprüfen Sie Folgendes:

  • Die Datei befindet sich bei .github/instructions/<name>.instructions.md (das .instructions.md Suffix ist erforderlich).
  • Das applyTo passt zu der Datei, an der Sie arbeiten.
  • Die Datei wird gespeichert.

Muster und bewährte Methoden

  • Eine Datei pro Sprache oder Domäne. Verwenden Sie für T-SQL, TypeScript, Python usw. getrennte Dateien, jeweils mit einem eigenen applyTo-Glob. Mischen Sie keine Sprachen in einer Datei.
  • Halten Sie sie deklarativ. Aufzählungszeichen und kurze Regeln funktionieren besser als Prose. GitHub Copilot folgt Anweisungen zuverlässiger, wenn sie gescannt werden können.
  • Versionskontrolle der Dateien. Checken Sie .github/instructions/ in Ihr Repository ein, damit alle Mitwirkenden automatisch davon profitieren.
  • Mit Planmodus koppeln. Wenn Sie den Planmodus für den Datenbankentwurf verwenden, werden Konventionen automatisch geerbt. Sie müssen sie nicht im Prompt erneut angeben.
  • Testen Sie nach Änderungen. Verwenden Sie die Debugansicht, um zu bestätigen, dass die Anweisungen angewendet werden, wenn Sie die Datei aktualisieren.

Teilen von Erfahrungen

Um uns dabei zu helfen, GitHub Copilot für die MSSQL-Erweiterung zu verfeinern und zu verbessern, verwenden Sie die folgende GitHub-Problemvorlage, um Ihr Feedback zu übermitteln: GitHub Copilot Feedback

Berücksichtigen Sie bei der Übermittlung von Feedback Folgendes:

  • Getestete Szenarien: Teilen Sie uns mit, auf welche Bereiche Sie sich konzentrieren, z. B. Schemaerstellung, Abfragegenerierung, Sicherheit, Lokalisierung.

  • Was gut funktioniert hat: Beschreiben Sie eine Erfahrung, die glatt verlief, hilfreich war oder Ihre Erwartungen übertroffen hat.

  • Probleme oder Fehler: Schließen Sie Alle Probleme, Inkonsistenzen oder verwirrende Verhaltensweisen ein. Screenshots oder Bildschirmaufzeichnungen sind besonders hilfreich.

  • Verbesserungsvorschläge: Teilen Sie Ideen zur Verbesserung der Benutzerfreundlichkeit, zur Erweiterung der Abdeckung oder zur Verbesserung der Antworten von GitHub Copilot.