Verwenden Sie den GitHub Copilot Agent-Modus (Vorschau) in SQL Server Management Studio

Der GitHub Copilot-Agentmodus (Vorschau) in SQL Server Management Studio (SSMS) ermöglicht es Ihnen, ein übergeordnetes Ziel in natürlicher Sprache anzugeben und Copilot dieses Ziel selbstständig bearbeiten zu lassen, indem es Abfragen ausführt, Dateien liest und seine eigenen Ergebnisse iterativ verfeinert, bis die Aufgabe abgeschlossen ist oder Ihre Eingabe benötigt wird.

Hinweis

Der GitHub Copilot Agentmodus in SQL Server Management Studio (SSMS) ist derzeit als Vorschau verfügbar.

Im Gegensatz zum Ask-Modus, der nach einer einzelnen Antwort beendet wird, führt der Agentmodus weiterhin Schritte aus, aufruft Tools und verfeinert seinen Ansatz, bis es Ihr Ziel erreicht. Alle Abfragen und Befehle werden im Kontext der Anmeldung und Berechtigungen des Benutzers ausgeführt, es sei denn, ein benutzerdefinierter Datenbankbenutzer oder eine SQL-Anmeldung wird im Vordergrund der Datenbank CONSTITUTION.mdangegeben. Weitere Informationen finden Sie unter Ausführungskontext für GitHub Copilot in SQL Server Management Studio.

Important

Der Agentmodus kann Abfragen ausführen und Datenbankänderungen in Ihrem Auftrag vornehmen. Copilot fordert Ihre Genehmigung an, bevor jede Abfrage oder jeder Befehl ausgeführt wird. Überprüfen Sie vorgeschlagene Aktionen sorgfältig, bevor Sie sie genehmigen. Setzen Sie die Zugriffssteuerung mithilfe von SQL Servers Berechtigungen nach dem Least-Privilege-Prinzip durch. Die Sicherheitsgrenze ist die Berechtigungsdurchsetzung von SQL Server, nicht das Genehmigungssystem von Copilot.

Ask-Modus im Vergleich zum Agent-Modus

Verwenden Sie die folgende Tabelle, um zu entscheiden, welcher Modus zu Ihrer Aufgabe passt:

Fragemodus Agentmodus
So funktioniert es Einzelne Antwort pro Eingabeaufforderung; Code manuell anwenden Ausführung in mehreren Schritten; wiederholt sich, bis das Ziel erreicht ist
Ausführung Nur Leseabfragen Abfragen und Befehle werden mit Ihrer Genehmigung ausgeführt
Schemaänderungen Generiert T-SQL für die Ausführung Kann Schemaänderungen ausführen, wenn Sie sie genehmigen und Ihr Konto über die erforderlichen Berechtigungen verfügt
Am besten geeignet für Erkunden von Ideen, Überprüfen des generierten Codes vor der Anwendung Komplexe Aufgaben mit mehreren Schritten, Untersuchung, Analyse und iterative Entwicklung
Unterbrechung Einmalige Antwort, Sie können jederzeit abbrechen Sie können jederzeit abbrechen

Voraussetzungen

Agentmodus verwenden

Im Agent-Modus arbeitet Copilot autonom und bestimmt den relevanten Kontext für Ihre Eingabeaufforderung. Der Agentmodus für GitHub Copilot in SSMS verwendet einen lokalen MCP-Server, sql-tools für die Integration und wird mit einem vordefinierten Satz von Tools ausgeliefert.

  1. Wählen Sie in SSMS View>GitHub Copilot Chat aus, um das Chatfenster zu öffnen.
  2. Erweitern Sie unten im Chatfenster die Dropdownliste für den Modus, und wählen Sie "Agent" aus.
  3. Wählen Sie unten rechts im Chatfenster das Symbol "Extras" aus, um die verfügbaren Tools anzuzeigen.
  4. Erweitern Sie sql-tools , um die vordefinierten Tools anzuzeigen. Zeigen Sie mit der Maus auf den Toolnamen, um mehr über die Funktionsweise zu erfahren. Wenn Sie alle Tools deaktivieren, funktioniert der Agentmodus nicht wie erwartet.
  5. Sie können die Liste der SSMS Tools nicht deaktivieren.
  6. Geben Sie Ihre Eingabeaufforderung ein, die das übergeordnete Ziel beschreibt, und geben Sie den Namen der Datenbank oder des Servers ein, für die Sie arbeiten. Der Agentmodus erbt keinen Kontext vom aktiven Abfrage-Editor.

Important

Um optimale Ergebnisse zu erzielen, schließen Sie die Datenbank oder den Server in Ihre Eingabeaufforderung ein. Diese Einbeziehung verringert die Mehrdeutigkeit und die Anzahl der Toolaufrufe. Wenn Sie keine Verbindungsinformationen enthalten, liest Copilot Ihre Verbindungsliste vor, um eine zu verwendende Verbindung zu identifizieren oder zu klären, welche Datenbank oder welcher Server verwendet werden soll.

  1. Um Ihre Eingabeaufforderung zu übermitteln, wählen Sie "Senden" aus, oder drücken Sie die EINGABETASTE.

    Beispielaufforderungen für die ersten Schritte:

    - In the WideWorldImporters database on the SalesPRD server, analyze the `Sales.usp_QuarterlySalesSummary` stored procedure and its execution plan and tell me how to improve it
    - The AdventureWorks database on the SalesPRD server had high CPU between 1PM and 2PM today, investigate what caused it
    - Find the SQL Agent jobs on the SalesPRD server that failed in the last 24 hours, analyze the history and explain what happened and how to fix the jobs
    
  2. Der Agentmodus ruft möglicherweise mehrere Tools auf, um Ihre Anforderung abzuschließen. Wenn Sie beispielsweise Schemainformationen lesen, Transact-SQL generieren und Ergebnisse analysieren. Das aktive Tool wird im Chat angezeigt, während jeder Schritt ausgeführt wird.

  3. Wenn Copilot bereit ist, eine Abfrage oder einen Befehl auszuführen, wird sie angehalten und zur Genehmigung aufgefordert. Überprüfen Sie die vorgeschlagene Aktion, und wählen Sie dann 'Zulassen ' aus, um den Vorgang fortzusetzen, oder schließen , um diesen Schritt zu überspringen.

    Sie können den Genehmigungsbereich mithilfe der Dropdownliste "Zulassen " konfigurieren:

    Auswahl Auswirkung
    Einmal zulassen Genehmigt diesen einzelnen Aufruf
    Diese Sitzung zulassen Genehmigt dieses Tool für den Rest der aktuellen Chatsitzung.
    Immer zulassen Genehmigt dieses Tool für alle nachfolgenden Aufrufe.

    Um die Einstellungen für die Toolgenehmigung zurückzusetzen, wechseln Sie zu Tools>Options>GitHub>Copilot>Tools.

  4. Copilot überwacht das Ergebnis der einzelnen Schritte. Wenn eine Abfrage einen Fehler oder ein Ergebnis zurückgibt, das Ihr Ziel nicht erfüllt, Copilot den Ansatz überarbeitet und automatisch erneut versucht.

  5. Wenn die Aufgabe abgeschlossen ist, fasst Copilot zusammen, was sie getan hat. Überprüfen Sie alle Änderungen, die auf Ihre Datenbank oder den Abfrage-Editor angewendet wurden.

Agentmodus-Tools verstehen

Im Agentmodus können Copilot die folgenden Tools verwenden, um Ihre Anforderung abzuschließen:

Hinweis

Der Agentmodus funktioniert nur mit Datenbanken und Objekten, auf die Sie zugreifen oder eine Verbindung herstellen können, oder mithilfe von Anmeldeinformationen in der Datenbankdatei CONSTITUTION.md . Es verfügt über keine erhöhten Berechtigungen, die über die Ihrer Anmeldedaten hinausgehen.

Um die im Agentmodus verfügbaren Tools anzuzeigen und zu verwalten, wählen Sie im Chatfenster das Symbol Tools aus. Basierend auf dem Ergebnis eines Tools kann Copilot andere Tools aufrufen, um die gesamtanforderung auszuführen. Wenn beispielsweise eine T-SQL-Codebearbeitung zu einem Syntaxfehler führt, Copilot möglicherweise einen anderen Ansatz untersuchen und eine andere Änderung vorschlagen.

Sie können den Agent-Modus auch mit MCP-Servern erweitern, um Copilot mit externen Tools und Diensten zu verbinden. Die für einen MCP-Server verfügbaren Tools werden nicht automatisch aktiviert. Die Kontrollkästchen sind standardmäßig deaktiviert, und Sie müssen sie aktivieren, um die Tools zu aktivieren.

Verwalten von Toolgenehmigungen

Copilot fordert eine Bestätigung an, bevor Sie eine Abfrage ausführen oder ein externes Tool aufrufen. Dieser Schritt schützt Sie vor unbeabsichtigten Änderungen. Standardmäßig erfordert jede Aktion eine explizite Genehmigung.

Verwenden Sie beim Genehmigen eines Tools die Dropdownliste "Zulassen ", um die Persistenz festzulegen:

  • Diese Sitzung zulassen: Keine weiteren Eingabeaufforderungen für dieses Tool in der aktuellen Chatsitzung
  • Immer zulassen: wird für dieses Tool sitzungsübergreifend gespeichert

Um Genehmigungen zu überprüfen und zurückzusetzen, wechseln Sie zu Tools>Options>GitHub>Copilot>Tools.

Annehmen oder Verwerfen von Bearbeitungen

Wenn der Agentmodus Änderungen auf geöffnete Dateien anwendet, wird im Chatfenster eine Zusammenfassung der Gesamtänderungen angezeigt. Wählen Sie jede Datei aus, um Änderungen einzeln zu überprüfen. Sie können Bearbeitungen an jedem Codeabschnitt beibehalten oder rückgängig machen, indem Sie die Schaltflächen " Beibehalten " und "Rückgängig" verwenden . Wählen Sie alternativ in der Liste "Gesamtänderungen" die Option "Beibehalten" oder "Rückgängig" für alle Änderungen aus, die seit der letzten Auswahl von "Beibehalten" oder "Rückgängig" vorgenommen wurden.

Zusammenfassungsansicht mit mehreren Dateien

Ab SSMS 22.6 können Sie, wenn Copilot mehrere Dateien bearbeitet, alle Änderungen in einer einzigen Zusammenfassungsansicht überprüfen, anstatt einzeln zwischen Dateien zu wechseln.

  1. Nachdem Copilot die Bearbeitung abgeschlossen hat, wählen Sie im Arbeitssatz von Copilot Chat die Schaltfläche Änderungsübersicht öffnen aus.
  2. Eine einzelne Registerkarte wird geöffnet, auf der alle geänderten Dateien mit den aufgeführten Unterschieden angezeigt werden.
  3. Sie können Änderungen auf unterschiedlichen Granularitätsebenen annehmen oder rückgängigmachen:
  • Für alle Dateien gleichzeitig, mithilfe der globalen Schaltflächen Dateien beibehalten und Dateien rückgängig machen.
  • Verwenden Sie für jede Datei die Schaltflächen "Alle Änderungen beibehalten " und " Alle rückgängig" .
  • Verwenden Sie für jede einzelne Codeänderung Beibehalten (STRG + Y) und Rückgängig machen (STRG + N).
  1. Verwenden Sie die Steuerelemente in der oberen linken Ecke des Fensters, um:
  • Reduzieren aller Dateiinhalte, um nur Dateiheader anzuzeigen, um eine schnelle Übersicht zu ermöglichen
  • Navigieren Sie zwischen Diff-Blöcken mithilfe der Schaltflächen "Weiter" und "Vorherige", um schnell durch Änderungen zu springen. Sie können auch eine beliebige Datei auswählen, um sie separat zu öffnen und den vollständigen Kontext anzuzeigen.

Unterbrechen einer Agentmodusanforderung

Wenn Sie eine laufende Agentmodusanfrage jederzeit beenden möchten, wählen Sie im Chatfenster "Abbrechen" aus . Beim Abbrechen werden alle laufenden Tools und ausstehenden Abfragen beendet. Alle bereits ausgeführten und genehmigten Abfragen werden nicht automatisch zurückgesetzt. Überprüfen Sie den Datenbankstatus nach dem Abbrechen eines mehrstufigen Vorgangs bei Bedarf.

Szenarien

Die folgenden Beispiele zeigen, wie der Agentmodus allgemeine SQL Server Aufgaben verarbeitet. Diese Beispiele sind repräsentative Eingabeaufforderungen. Passen Sie sie an Ihre Datenbank und Ziele an.

Erstellen und Testen einer gespeicherten Prozedur

Within the WideWorldImporters database on the PRD-Sales server, create a stored procedure named Sales.GetTopCustomers that accepts a date range and a row count, and returns the top N customers by total order value in that date range. Include error handling and test it with sample parameters.

Der Agentmodus liest das Schema Ihrer Datenbank, um die entsprechenden Tabellen zu identifizieren, die gespeicherte Prozedur zu entwerfen, die CREATE PROCEDURE Anweisung auszuführen, und führt dann eine Testausführung mit Beispielparametern aus, um die Ausgabe zu überprüfen.

Optimieren der Abfrageleistung

The query in the active editor, connected to AdventureWorks on the TEST-AW server is running slowly. Analyze its execution plan and suggest options to improve performance.

Der Agentmodus kann einen geschätzten Ausführungsplan für Ihre Abfrage generieren, Abfragespeicher verwenden, um den Plan zu finden, oder einen tatsächlichen Plan verwenden, wenn Sie ihn als Referenz einschließen. Es identifiziert Antimuster in der Abfrage und die Ausführungspläne, einschließlich fehlender Indizes. Es schlägt spezifische Code- und Schemaänderungen vor, einschließlich CREATE INDEX Anweisungen, und kann die Änderungen implementieren, wenn Sie dies genehmigen. Implementieren Sie immer Änderungen in einer Test- oder Entwicklungsumgebung, bevor Sie sie auf eine Produktionsdatenbank anwenden.

Untersuchen von Protokollen

Analyze the SQL ERRORLOG for the PRD-HR server for the last month and give me a list of errors and problems and solutions for fixing them.

Der Agentmodus überprüft die ERRORLOG-Dateien für die Instanz, erstellt eine Liste der identifizierten Probleme und generiert Vorschläge zur Lösung.

Überwachen und Beheben von Berechtigungslücken

Review the permissions for the Reporting role in the CustomerSales database on the PRD-Sales server and identify any tables in the Sales schema that it can't access. Add the missing SELECT permissions.

Der Agentmodus fragt die Berechtigungskatalogansichten ab, identifiziert Lücken, generiert GRANT Anweisungen und führt sie aus, wenn Sie dies genehmigen.

Ausführungskontext und Berechtigungen

Alle Abfragen und Befehle, die im Agentmodus ausgeführt werden, werden im Kontext Ihres authentifizierten Kontos ausgeführt, es sei denn, Sie legen einen Datenbankbenutzer oder eine SQL-Anmeldung für GitHub Copilot im CONSTITUTION.md der Datenbank als agentExecuteAsUser fest.

  • Wenn Ihre Anmeldung nicht über die Berechtigung zum Ändern einer Tabelle verfügt, kann der Agentmodus sie auch dann nicht ändern, wenn Sie die vorgeschlagene Abfrage genehmigen.
  • das Genehmigungssystem von Copilot ist keine Sicherheitsgrenze. Wenden Sie das Prinzip der geringsten Berechtigungen in Ihrer Datenbank an: Gewähren Sie Benutzern nur die Berechtigungen, die sie für bestimmte Objekte benötigen.
  • Datenbanken, in denen Sie einen Datenbankbenutzer oder eine SQL-Anmeldung angeben möchten, finden Sie unter Execution-Kontext für GitHub Copilot in SQL Server Management Studio.
  • Wenn ein Datenbankbenutzer oder ein SQL-Login einer Datenbank zugeordnet ist und der Benutzer von GitHub Copilot nicht über die IMPERSONATE-Berechtigung verfügt, kann er GitHub Copilot für diese Datenbank nicht verwenden.

Standardmäßig ist der Agentmodus auf READ_ONLY konfiguriert. Wenn Ihre Anmeldung oder das agentExecuteAsUser-Konto über Berechtigungen zum Ändern von Daten oder dem Datenbankschema verfügt, führt GitHub Copilot diese Abfragen standardmäßig nicht aus.

Sie können den Agent-Modus READ_WRITE in der mcp.json Datei ändern. Wenn Ihre Anmeldung oder Ihr agentExecuteAsUser Konto jedoch nicht über die Berechtigung verfügt, Daten oder das Datenbankschema zu ändern, scheitern solche Abfragen an den SQL-Sicherheitsberechtigungen.

Häufig gestellte Fragen

Führt der Agentmodus Abfragen automatisch aus, ohne mich zu fragen?

No. Der Agentmodus fordert Ihre Genehmigung an, bevor jede Abfrage oder jeder Befehl ausgeführt wird. Sie können ein Tool für die aktuelle Sitzung zulassen oder immer die Genehmigungsaufforderungen reduzieren.

Was geschieht, wenn eine Abfrage fehlschlägt?

Der Agentmodus erkennt den Fehler, analysiert ihn und überprüft den Ansatz automatisch. Es versucht, das Problem ohne weitere Eingaben von Ihnen zu beheben. Wenn der Fehler nach mehreren Versuchen nicht behoben werden kann, meldet er den Fehler und fordert Ihre Anleitung an.

Wie unterscheidet sich der Agentmodus vom Ask-Modus?

Der Fragemodus gibt eine einzelne Antwort zurück und stoppt. Sie entscheiden, ob der generierte Code angewendet werden soll. Der Agentmodus führt mehrere Schritte selbstständig aus, führt mit Ihrer Zustimmung Abfragen aus, überwacht die Ergebnisse und wiederholt den Vorgang. Verwenden Sie den Ask-Modus, wenn Sie die volle Kontrolle über jeden Schritt wünschen. Verwenden Sie den Agent-Modus für komplexe Aufgaben mit mehreren Schritten, bei denen Sie nur Anleitungen bereitstellen.

Kann ich den Agent-Modus mit MCP-Servern verwenden?

Yes. Sie müssen sich im Agentmodus befinden, um MCP-Tools zu verwenden. Siehe Verwenden von MCP-Servern mit GitHub Copilot in SQL Server Management Studio.

Wie kann ich als Administrator den Agentmodus für meine Organisation steuern?

Administratoren steuern den Agent-Modus über das GitHub Copilot-Dashboard. Weitere Informationen finden Sie unter Admin-Steuerelemente für GitHub Copilot in SQL Server Management Studio.