Freigeben über


Gespeicherte Prozeduren in der GraphQL-API

Gespeicherte Prozeduren können als GraphQL-Vorgänge im Daten-API-Generator (DAB) verfügbar gemacht werden. Dieser Ansatz ist nützlich für Szenarien, die benutzerdefinierte Logik, Filterung, Überprüfung oder berechnete Ergebnisse umfassen, die nicht von einfachen Tabellen oder Ansichten behandelt werden.

Konfiguration

So machen Sie eine gespeicherte Prozedur verfügbar:

  • Legen Sie source.type auf "stored-procedure" fest.
  • Setzen Sie source.object auf den vollqualifizierten Prozedurnamen
  • Optionale parameters mit ihren Standardwerten definieren, falls erforderlich.
  • Setzen Sie graphql.operation auf "query" oder "mutation", oder lassen Sie es weg, um standardmäßig "mutation" zu verwenden.
  • Erteilen von Berechtigungen mithilfe der "execute" Aktion

CLI-Beispiel

dab add GetCowrittenBooksByAuthor \
  --source dbo.stp_get_all_cowritten_books_by_author \
  --source.type "stored-procedure" \
  --parameters.name "searchType" \
  --parameters.required "false" \
  --parameters.default "default-value" \
  --parameters.description "The type of search to perform" \
  --permissions "anonymous:execute" \
  --graphql.operation "query"

Konfigurationsbeispiel

"GetCowrittenBooksByAuthor": {
  "source": {
    "type": "stored-procedure",
    "object": "dbo.stp_get_all_cowritten_books_by_author",
    "parameters": [
      {
        "name": "searchType",
        "required": false,
        "default": "default-value",
        "description": "The type of search to perform"
      }
    ]
  },
  "graphql": {
    "operation": "query"
  },
  "permissions": [
    {
      "role": "anonymous",
      "actions": [ "execute" ]
    }
  ]
}

Warnung

Das Wörterbuchformat für parameters (z. B. { "searchType": "default-value" }) ist in DAB 2.0 veraltet. Verwenden Sie das im vorherigen Beispiel gezeigte Arrayformat. Das alte Format wird weiterhin aus Gründen der Abwärtskompatibilität akzeptiert.

Tipp

Weitere Informationen zum Parameterarrayformat finden Sie in der Quellkonfiguration.

GraphQL-Verhalten

  • graphql.operation muss "query" oder "mutation" sein
  • Felder sind automatisch mit execute versehen, z. B. executeGetCowrittenBooksByAuthor.
  • Parameter werden als GraphQL-Argumente übergeben.

Beispielabfrage

query {
  executeGetCowrittenBooksByAuthor(author: "asimov") {
    id
    title
  }
}

Benutzerdefinierte MCP-Tools

Ab DAB 2.0 können gespeicherte Prozeduren als benutzerdefinierte MCP-Tools (Model Context Protocol) verfügbar gemacht werden. Wenn Sie "custom-tool": true auf einer gespeicherten Prozedur-Entität festlegen, registriert DAB die Prozedur dynamisch als benanntes Tool in den MCP tools/list- und tools/call-Endpunkten. KI-Agents können das Tool direkt anhand des Namens ermitteln und aufrufen, wobei Parameter mit der Prozedursignatur übereinstimmen.

"GetBookById": {
  "source": {
    "type": "stored-procedure",
    "object": "dbo.get_book_by_id"
  },
  "mcp": {
    "custom-tool": true
  },
  "permissions": [
    {
      "role": "anonymous",
      "actions": [ "execute" ]
    }
  ]
}

CLI-Entsprechung:

dab add GetBookById \
  --source dbo.get_book_by_id \
  --source.type "stored-procedure" \
  --permissions "anonymous:execute" \
  --mcp.custom-tool true

Hinweis

Die in diesem Abschnitt beschriebene SQL MCP Server 2.0-Funktionalität befindet sich derzeit in der Vorschau und kann sich vor der allgemeinen Verfügbarkeit ändern. Weitere Informationen finden Sie unter Neuigkeiten in Version 2.0.

Einschränkungen

  • Es wird nur die erste Ergebnismenge zurückgegeben.
  • Paginierung, Filterung und Sortierung werden nicht unterstützt.
  • Beziehungen werden nicht unterstützt
  • Erfordert Metadaten von sys.dm_exec_describe_first_result_set
  • Ein einzelnes Element kann nicht nach Schlüssel zurückgegeben werden.
  • Keine Autorisierung auf Parameterebene