Aracılığıyla paylaş


sql_request eklentisi

Eklenti, sql_request Azure SQL Server ağ uç noktasına bir SQL sorgusu gönderir ve sonuçları döndürür. SQL tarafından birden fazla satır kümesi döndürülürse, yalnızca ilk satır kümesi kullanılır. Eklenti işleciyle birlikte çağrılır evaluate .

Sözdizimi

evaluatesql_request ( ConnectionString SqlQuery [, SqlParameters [, Seçenekler]] ) [: OutputSchema] ,

Söz dizimi kuralları hakkında daha fazla bilgi edinin.

Parametreler

Ad Tür Zorunlu Açıklama
ConnectionString string ✔️ SQL Server ağ uç noktasını işaret eden bağlantı dizesi. Geçerli kimlik doğrulama yöntemlerine ve ağ uç noktasını belirtmeye bakın.
SqlQuery string ✔️ SQL uç noktasında yürütülecek sorgu. Sorgu bir veya daha fazla satır kümesi döndürmelidir, ancak Kusto sorgusunun geri kalanında yalnızca ilki kullanılabilir hale getirilir.
SqlParameters dynamic Sorguyla birlikte parametre olarak geçirmek için anahtar-değer çiftlerinin özellik paketi.
Seçenekler dynamic Sorguyla birlikte daha gelişmiş ayarlar geçirmek için anahtar-değer çiftlerinden oluşan bir özellik paketi. Şu anda yalnızca token , kimlik doğrulaması için SQL uç noktasına iletilen çağıran tarafından sağlanan bir Microsoft Entra erişim belirtecini geçirmek üzere ayarlanabilir.
OutputSchema string Eklenti çıkışının beklenen sütunları sql_request için adlar ve türler. Aşağıdaki söz dizimini kullanın: ( ColumnName : ColumnType [, ...] ).

Not

  • OutputSchema'nın belirtilmesi kesinlikle önerilir, bu nedenle eklentinin kümeler arası sorgu gibi olmadan çalışmayabilecek senaryolarda kullanılmasına izin verir. OutputSchema, birden çok sorgu iyileştirmesini de etkinleştirebilir.
  • SQL ağ uç noktası tarafından döndürülen ilk satır kümesinin çalışma zamanı şeması OutputSchema şemasıyla eşleşmiyorsa hata oluşur.

Kimlik doğrulaması ve yetkilendirme

sql_request eklentisi, SQL Server uç noktasında aşağıdaki üç kimlik doğrulama yöntemini destekler.

Kimlik doğrulama yöntemi Sözdizimi Nasıl? Açıklama
Microsoft Entra tümleşik Authentication="Active Directory Integrated" ConnectionString parametresine ekleyin. Bu, tercih edilen kimlik doğrulama yöntemidir. Kullanıcı veya uygulama kümenizde Microsoft Entra Kimliği aracılığıyla kimlik doğrulaması yapar ve SQL Server ağ uç noktasına erişmek için aynı belirteç kullanılır.
sorumlu, istenen eylemi gerçekleştirmek için SQL kaynağı üzerinde uygun izinlere sahip olmalıdır. Örneğin, veritabanından okumak için sorumlunun SELECT izinleri tablosuna ve var olan bir tabloya yazmak için UPDATE ve INSERT izinlerine ihtiyacı vardır. Yeni bir tabloya yazmak için CREATE izinleri de gereklidir.
Kullanıcı adı ve parola User ID=...; Password=...; ConnectionString parametresine ekleyin. Mümkün olduğunda, daha az güvenli olabileceğinden bu yöntemden kaçının.
Microsoft Entra erişim belirteci dynamic({'token': h"eyJ0..."}) Seçenekler parametresine ekleyin. Erişim belirteci, eklentinin Seçenekler bağımsız değişkeninde özellik olarak token geçirilir.

Not

Gizli bilgileri veya korunması gereken bilgileri içeren bağlantı dizeleri ve sorgular kusto izlemesinden atlanacak şekilde gizlenmelidir. Daha fazla bilgi için bkz . belirsiz dize değişmez değerleri.

Örnekler

Microsoft Entra tümleşik kimlik doğrulamayı kullanarak SQL sorgusu gönderme

Aşağıdaki örnek, Azure SQL DB veritabanına bir SQL sorgusu gönderir. 'den [dbo].[Table]tüm kayıtları alır ve ardından sonuçları Kusto tarafında işler. Kimlik doğrulaması, çağıran kullanıcının Microsoft Entra belirtecini yeniden kullanılır.

Not

Bu örnek, verileri bu şekilde filtrelemek veya yansıtmak için öneri olarak alınmamalıdır. SQL sorguları, mümkün olan en küçük veri kümesini döndürecek şekilde oluşturulmalıdır.

evaluate sql_request(
  'Server=tcp:contoso.database.windows.net,1433;'
    'Authentication="Active Directory Integrated";'
    'Initial Catalog=Fabrikam;',
  'select * from [dbo].[Table]') : (Id:long, Name:string)
| where Id > 0
| project Name

Kullanıcı Adı/Parola kimlik doğrulaması kullanarak SQL sorgusu gönderme

Aşağıdaki örnek, SQL kimlik doğrulamasının kullanıcı adı/parola ile yapılması dışında önceki örnekle aynıdır. Gizlilik için burada karartılmış dizeler kullanırız.

evaluate sql_request(
  'Server=tcp:contoso.database.windows.net,1433;'
    'Initial Catalog=Fabrikam;'
    h'User ID=USERNAME;'
    h'Password=PASSWORD;',
  'select * from [dbo].[Table]') : (Id:long, Name:string)
| where Id > 0
| project Name

Microsoft Entra erişim belirtecini kullanarak SQL sorgusu gönderme

Aşağıdaki örnek, azure sql veritabanına bir SQL sorgusu gönderir ve bu sırada başka bir datetime sütun eklerken tüm kayıtları [dbo].[Table]alır ve ardından sonuçları Kusto tarafında işler. SQL sorgusunda kullanılacak bir SQL parametresini (@param0) belirtir.

evaluate sql_request(
  'Server=tcp:contoso.database.windows.net,1433;'
    'Authentication="Active Directory Integrated";'
    'Initial Catalog=Fabrikam;',
  'select *, @param0 as dt from [dbo].[Table]',
  dynamic({'param0': datetime(2020-01-01 16:47:26.7423305)})) : (Id:long, Name:string, dt: datetime)
| where Id > 0
| project Name

Sorgu tanımlı çıkış şeması olmadan SQL sorgusu gönderme

Aşağıdaki örnek, çıkış şeması olmayan bir Azure SQL veritabanına SQL sorgusu gönderir. Şema bilinmediği sürece bu önerilmez, bunun nedeni sorgunun performansını etkileyebilecek olmasıdır

evaluate sql_request(
  'Server=tcp:contoso.database.windows.net,1433;'
    'Initial Catalog=Fabrikam;'
    h'User ID=USERNAME;'
    h'Password=PASSWORD;',
  'select * from [dbo].[Table]')
| where Id > 0
| project Name

Şifreleme ve sunucu doğrulaması

Aşağıdaki bağlantı özellikleri, güvenlik nedeniyle bir SQL Server ağ uç noktasına bağlanırken zorlanır.

  • Encrypt koşulsuz olarak true ayarlanır.
  • TrustServerCertificate koşulsuz olarak false ayarlanır.

Sonuç olarak, SQL Server geçerli bir SSL/TLS sunucu sertifikasıyla yapılandırılmalıdır.

Ağ uç noktasını belirtme

SQL ağ uç noktasının bağlantı dizesi bir parçası olarak belirtilmesi zorunludur. Uygun söz dizimi:

Server= tcp: FQDN [, Bağlantı Noktası]

Where:

  • FQDN , uç noktanın tam etki alanı adıdır.
  • Bağlantı noktası , uç noktanın TCP bağlantı noktasıdır. Varsayılan olarak varsayılır 1433 .

Not

Ağ uç noktasını belirtmenin diğer biçimleri desteklenmez. Örneğin, SQL istemci kitaplıklarını program aracılığıyla kullanırken bunu yapmak mümkün olsa bile ön eki tcp: atlayamazsınız.

Bu özellik Azure İzleyici'de desteklenmez