Sdílet prostřednictvím


Uložené procedury v rozhraní GraphQL API

Uložené procedury je možné vystavit jako operace GraphQL v Tvůrci rozhraní Data API (DAB). Tento přístup je užitečný pro scénáře, které zahrnují vlastní logiku, filtrování, ověření nebo vypočítané výsledky, které nezpracovává jednoduché tabulky nebo zobrazení.

Konfigurace

Zpřístupnění uložené procedury:

  • Nastavte source.type na hodnotu "stored-procedure".
  • Nastavit source.object na plně kvalifikovaný název procedury
  • V případě potřeby definujte volitelné parameters s jejich výchozími nastaveními.
  • graphql.operation Nastavit "query" na hodnotu nebo "mutation"nebo vynechat výchozí hodnotu"mutation"
  • Udělení oprávnění pomocí "execute" akce

Příklad rozhraní příkazového řádku

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"

Příklad konfigurace

"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" ]
    }
  ]
}

Výstraha

Formát slovníku pro parameters (například { "searchType": "default-value" }) je v DAB 2.0 zastaralý. Použijte formát pole zobrazený v předchozím příkladu. Starý formát je stále přijímán kvůli zpětné kompatibilitě.

Návod

Další informace o formátu pole parametrů naleznete ve zdrojové konfiguraci.

Chování GraphQL

  • Vyžaduje graphql.operation , aby byl "query" nebo "mutation"
  • Pole jsou automaticky předvoleny s předponou execute, například executeGetCowrittenBooksByAuthor
  • Parametry se předávají jako argumenty GraphQL.

Příklad dotazu

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

Vlastní nástroje MCP

Od VERZE DAB 2.0 je možné uložené procedury vystavit jako vlastní nástroje MCP (Model Context Protocol). Když nastavíte "custom-tool": true na entitu uloženou procedurou, DAB dynamicky zaregistruje proceduru jako pojmenovaný nástroj na MCP tools/list a tools/call koncových bodech. Agenti umělé inteligence mohou nástroj zjistit a vyvolat přímo podle názvu s parametry odpovídajícími podpisu procedury.

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

CLI ekvivalent:

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

Poznámka:

Funkce SQL MCP Serveru 2.0 popsané v této části jsou aktuálně ve verzi Preview a můžou se změnit před obecnou dostupností. Další informace najdete v tématu Co je nového ve verzi 2.0.

Omezení

  • Vrátí se pouze první sada výsledků .
  • Stránkování, filtrování a řazení se nepodporuje.
  • Vztahy nejsou podporovány.
  • Vyžaduje metadata z sys.dm_exec_describe_first_result_set
  • Nelze vrátit jedinou položku podle klíče
  • Bez autorizace na úrovni parametrů