Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu başvuru, Veri API oluşturucusu (DAB) tarafından desteklenen bir veya daha fazla veritabanı platformuna özgü özellikleri, davranışları ve gereksinimleri kapsar. Veritabanları arası özellik karşılaştırma matrisi için bkz. Özellik kullanılabilirliği.
Veritabanı sürümü desteği
DAB aşağıdaki veritabanı platformlarını destekler. En düşük sürüm gereksinimleri, kendi kendine yönetilen dağıtımlar için geçerlidir. Hizmet sürümü yönettiğinden hizmet olarak platform (PaaS) veritabanlarının en düşük sürüm gereksinimi yoktur.
| Veritabanı platformu | Abbreviation | En düşük sürüm | Notlar |
|---|---|---|---|
| SQL Server | SQL Ailesi | 2016 | |
| Azure SQL | SQL Ailesi | Yok (PaaS) | |
| Microsoft Fabric SQL | SQL Ailesi | Yok (PaaS) | |
| NoSQL için Azure Cosmos DB | Cosmos DB | Yok (PaaS) | Yalnızca GraphQL; REST uç noktası yok |
| PostgreSQL | PGSQL | 11 | |
| MySQL | MySQL | 8 | |
| Azure Synapse Analytics (Ayrılmış SQL havuzu) | SQLDW | Yok (PaaS) | Sunucusuz SQL havuzu desteklenmiyor |
Önemli
Hem yerel geliştirme veritabanınızın hem de dağıtılan veritabanlarının en düşük sürüm gereksinimini karşıladığını doğrulayın. DAB her iki ortamda da aynı sürücüyü kullanarak bağlanır. Her iki konumdaki eski bir sürüm çalışma zamanı hatalarının nedenidir.
SQL Server ve Azure SQL
SESSION_CONTEXT
DAB, SQL Server ve Azure SQL için her sorguyu yürütmeden önce çağırarak sp_set_session_context kimliği doğrulanmış kullanıcı taleplerini veritabanına yayabilir. Bu mekanizma, SQL yerel satır düzeyi güvenlik ilkelerinin ve saklı yordamların, çağıranın kimliğini veritabanı altyapısı içinden okumasına olanak tanır.
DAB yapılandırmasında etkinleştirildiğinde set-session-context , DAB tüm kimliği doğrulanmış talepleri anahtar-değer çiftleri olarak gönderir:
EXEC sp_set_session_context 'roles', 'editor', @read_only = 0;
EXEC sp_set_session_context 'oid', 'a1b2c3d4-...', @read_only = 0;
-- Your query executes after claims are set
SELECT * FROM dbo.Documents;
Gönderilen yaygın talepler , sub, oidve kimlik sağlayıcınızın JWT'ye dahil olduğu tüm özel talepleri içerirroles.
SESSION_CONTEXT etkinleştirme
çağrılırken dab initayarla--set-session-context true:
dab init \
--database-type mssql \
--connection-string "@env('SQL_CONNECTION_STRING')" \
--set-session-context true
Veya özelliğini doğrudan içinde dab-config.jsonayarlayın:
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')",
"options": {
"set-session-context": true
}
}
}
Uyarı
Etkinleştirme, set-session-context bu veri kaynağı için yanıt önbelleğe almayı devre dışı bırakır. Her istek ayrı oturum değerleri belirlediğinden, bir kullanıcının oturumundan önbelleğe alınan yanıtlar başka bir kullanıcıya sunulmamalıdır.
SQL'de SESSION_CONTEXT kullanma
etkinleştirdikten set-session-contextsonra SQL nesneleriniz talep değerlerini okuyabilir:
-- Read a claim in a stored procedure
DECLARE @role NVARCHAR(256) = CAST(SESSION_CONTEXT(N'roles') AS NVARCHAR(256));
-- Use a claim in a row-level security predicate function
CREATE FUNCTION dbo.RlsPredicate(@claimRole NVARCHAR(256))
RETURNS TABLE
WITH SCHEMABINDING
AS RETURN SELECT 1 AS result
WHERE @claimRole = CAST(SESSION_CONTEXT(N'roles') AS NVARCHAR(256));
Tam bir izlenecek yol için bkz. Oturum bağlamıyla satır düzeyi güvenlik uygulama.
SESSION_CONTEXT ve bağlantı havuzu oluşturma
DAB, her isteğin başındaki tüm oturum bağlamı değerlerini sıfırlar. Ancak, set-session-context kullanıcı başına bağlantı semantiğini zorladığından, bu seçenek etkinleştirildiğinde kullanıcılar arasında bağlantının yeniden kullanılması otomatik olarak önlenir.
Bağlantı dizesi değişkenleri
DAB, SQL Server ve Azure SQL için kullanır Microsoft.Data.SqlClient . Kitaplık bu bağlantı dizesi biçimlerini destekler.
Yaygın biçimler:
| Kimlik doğrulama yöntemi | Bağlantı dizesi deseni |
|---|---|
| SQL oturum açma | Server=tcp:<server>.database.windows.net;Database=<db>;User ID=<user>;Password=<pwd>; |
| İdare edilen kimlik | Server=tcp:<server>.database.windows.net;Database=<db>;Authentication=Active Directory Managed Identity; |
| Kullanıcı Atamalı Yönetilen Kimlik | Server=tcp:<server>.database.windows.net;Database=<db>;Authentication=Active Directory Managed Identity;User ID=<client-id>; |
| Varsayılan Azure kimlik bilgileri | Server=tcp:<server>.database.windows.net;Database=<db>;Authentication=Active Directory Default; |
Tavsiye
Bağlantı dizelerini ortam değişkenlerinde depolayın ve ile @env('SQL_CONNECTION_STRING')bunlara başvurun. Üretim dağıtımları için bağlantı dizesini Azure Key Vault'ta depolayın ve ile buna @akv()başvurun.
Desteklenmeyen veri türleri
Aşağıdaki SQL Server ve Azure SQL veri türleri DAB tarafından desteklenmez:
| Veri türü | Nedeni |
|---|---|
geography |
Jeo-uzamsal tür; serileştirme desteklenmiyor |
geometry |
Planar uzamsal tip; serileştirme desteklenmiyor |
hierarchyid |
Hiyerarşik veri türü; serileştirme desteklenmiyor |
json |
Yerel JSON türü (şu anda önizlemede) |
rowversion |
Satır sürüm oluşturma türü; API yanıtlarına dahil değil |
sql_variant |
Değişken türündeki sütunlar; tür çıkarımı desteklenmiyor |
vector |
Vektör türü (şu anda önizlemede) |
xml |
XML türü; serileştirme desteklenmiyor |
NoSQL için Azure Cosmos DB
Şema gereksinimi
İlişkisel veritabanlarının aksine, NoSQL için Azure Cosmos DB şemadan bağımsızdır. DAB, GraphQL türleri oluşturmak için Cosmos DB kapsayıcısına giriş yapamaz. Belge yapınızı tanımlayan bir GraphQL şema dosyası (.gql) sağlamanız gerekir.
Şema dosyası, iki özel yönergeyle standart GraphQL Şema Tanım Dili 'ni (SDL) kullanır:
| Yönerge | Zorunlu | Description |
|---|---|---|
@model |
Evet | GraphQL türünü DAB varlık adıyla eşler |
@authorize |
Hayır | Alan veya tür erişimini belirli rollerle kısıtlar |
@model Talimat
yönergesi @model(name: "...") , DAB aracılığıyla kullanıma açtığınız her GraphQL türünde gereklidir. Değerin name DAB yapılandırma dosyanızdaki varlık adıyla tam olarak eşleşmesi gerekir.
type Book @model(name: "Book") {
id: ID
title: String
year: Int
}
@authorize Talimat
yönergesi @authorize Cosmos DB GraphQL sorguları için alan düzeyinde ve tür düzeyinde erişim denetimi sağlar. Alana veya türe erişebilecek rolleri listeleyen bir roles parametre kabul eder.
type Book @model(name: "Book") {
id: ID
title: String @authorize(roles: ["authenticated", "librarian"])
internalNotes: String @authorize(roles: ["editor"])
}
Ayrıca tür düzeyinde de uygulayabilirsiniz @authorize :
type InternalReport @model(name: "InternalReport") @authorize(roles: ["auditor"]) {
id: ID
summary: String
}
Önemli
yönergesi @authorize varlık düzeyi izinlerine ekler . Hem yönergesi hem de varlığın izin bloğu, erişim isteğinin başarılı olması için izin vermelidir. Bir alan varsa @authorize(roles: ["editor"]) ancak varlığın için editorizin girdisi yoksa istek reddedilir.
Uyarı
@authorize(policy: "...") desteklenmez. Yalnızca kullanın @authorize(roles: [...]) .
Tam kurulum kılavuzu için bkz. NoSQL için Azure Cosmos DB için Veri API oluşturucusu ayarlama.
REST API kullanılamıyor
DAB, NoSQL için Azure Cosmos DB için REST uç noktaları oluşturmaz. Azure Cosmos DB, belge işlemleri için kapsamlı bir yerel REST API sağlar. Yalnızca GraphQL uç noktaları oluşturulur. Cosmos DB varlıkları için OpenAPI belgeleri oluşturulmaz.
REST üzerinden verilere erişmek için Azure Cosmos DB REST API'sini doğrudan kullanın.
Cosmos DB için desteklenmeyen özellikler
Aşağıdaki özellikler NoSQL için Azure Cosmos DB için desteklenmez:
| Özellik | Notlar |
|---|---|
| REST uç noktaları | Bunun yerine yerel Cosmos DB REST API'sini kullanın |
| Veritabanı ilkeleri | İlke koşullarında ilişkisel sorgu semantiği gerekir |
| Saklanan prosedürler | DAB varlıkları olarak desteklenmez |
| İlişkiler | Kapsayıcılar arası ilişkiler desteklenmez |
Sıralama ($orderby) |
GraphQL sorgularında desteklenmez |
| Aggregation | Desteklenmiyor |
| Çoklu mutasyonlar | Desteklenmiyor |
| Oturum bağlamı | SQL'e özgü özellik |
PostgreSQL
En düşük sürüm
PostgreSQL 11 veya üzeri gereklidir. DAB, PostgreSQL sürücüsü olarak kullanır Npgsql .
Desteklenmeyen veri türleri
Aşağıdaki PostgreSQL veri türleri DAB tarafından desteklenmez:
| Veri türü | Notlar |
|---|---|
bytea |
İkili dize; serileştirme desteklenmiyor |
date |
Kullan timestamp veya timestamptz |
smalldatetime |
Yerel bir PostgreSQL türü değil |
datetime2 |
Yerel değil; genellikle tarafından işlenir timestamp |
timestamptz |
Saat dilimi ile zaman damgası; desteklenmiyor |
time |
Tarihsiz günün saati |
localtime |
Sistem saati tabanlı saat |
Saklanan prosedürler
Saklı yordamlar PostgreSQL varlıkları için desteklenmez. Bunun yerine tabloları ve görünümleri kullanın.
MySQL
En düşük sürüm
MySQL 8 veya üzeri gereklidir.
Desteklenmeyen veri türleri
Aşağıdaki MySQL veri türleri DAB tarafından desteklenmez:
| Veri türü | Notlar |
|---|---|
UUID |
Evrensel Olarak Benzersiz Tanımlayıcılar |
DATE |
Takvim tarihleri |
SMALLDATETIME |
Daha az kesin tarih ve saat depolama |
DATETIME2 |
Yerel değil; Kullanın datetime |
DATETIMEOFFSET |
Saat dilimi olan tarihler ve saatler |
TIME |
Tarihsiz günün saati |
LOCALTIME |
Sistem saatini temel alan geçerli saat |
Saklanan prosedürler
Saklı yordamlar MySQL varlıkları için desteklenmez. Bunun yerine tabloları kullanın.
Azure Synapse Analytics (Ayrılmış SQL havuzu)
Desteklenen nesneler
Ayrılmış SQL havuzu, SQL Server ve Azure SQL ile aynı şekilde tabloları, görünümleri ve saklı yordamları destekler. Sunucusuz SQL havuzu desteklenmez.
Desteklenmeyen özellikler
| Özellik | Notlar |
|---|---|
| Çoklu mutasyonlar | Desteklenmiyor |