GraphQL API'sindeki saklı yordamlar

Saklı yordamlar, Veri API'si oluşturucusunda (DAB) GraphQL işlemleri olarak gösterilebilir. Bu yaklaşım, basit tablolar veya görünümler tarafından işlenmeyen özel mantık, filtreleme, doğrulama veya hesaplanan sonuçlar içeren senaryolar için kullanışlıdır.

Konfigürasyon

Saklı yordamı kullanıma açmak için:

  • source.type seçeneğini "stored-procedure" olarak ayarlayın
  • source.object öğesini tam nitelikli yordam adına ayarlayın
  • Gerekirse, varsayılanlarıyla birlikte isteğe bağlı parameters tanımlayın
  • graphql.operation ayarını "query" veya "mutation" olarak yapın ya da varsayılan olarak "mutation"'e bırakın.
  • "execute" eylemini kullanarak izin ver

CLI örneği

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"

Yapılandırma örneği

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

Uyarı

için sözlük biçimi parameters (örneğin, { "searchType": "default-value" }) DAB 2.0'da kullanım dışıdır. Önceki örnekte gösterilen dizi biçimini kullanın. Eski biçim geriye dönük uyumluluk için hala kabul edilir.

Tavsiye

Parametreler dizisi biçimi hakkında daha fazla bilgi için bkz. kaynak yapılandırması.

GraphQL davranışı

  • graphql.operation olması veya "query" ya da "mutation" gerekir
  • Alanlar execute ön ekiyle otomatik olarak eklenir, örneğin, executeGetCowrittenBooksByAuthor
  • Parametreler GraphQL argümanları olarak geçirilir

Örnek sorgu

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

Özel MCP araçları

DAB 2.0'dan başlayarak, saklı yordamlar özel Model Bağlam Protokolü (MCP) araçları olarak gösterilebilir. Saklı yordam varlığı üzerinde "custom-tool": true ayarladığınızda, DAB, yordamı MCP tools/list ve tools/call uç noktalarında adlı bir araç olarak dinamik olarak kaydeder. Yapay zeka aracıları, aracı adıyla doğrudan bulup çağırabilir ve yordam imzasına uygun parametrelerle çalıştırabilir.

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

CLI eşdeğeri:

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

Uyarı

Bu bölümde açıklanan SQL MCP Server işlevselliği, Veri API oluşturucusu 2.0 ve sonraki sürümlerde kullanılabilir. Daha fazla bilgi için bkz. Sürüm 2.0'daki yenilikler.

Sınırlamalar

  • Yalnızca ilk sonuç kümesi döndürülür
  • Sayfalandırma, filtreleme ve sıralama desteklenmez
  • İlişkiler desteklenmiyor
  • Meta verileri gerektirir: sys.dm_exec_describe_first_result_set
  • Anahtar ile tek bir öğe döndürülemiyor.
  • Parametre düzeyinde yetkilendirme yok