mysql_request plugin

Das Plug-In mysql_request sendet eine SQL-Abfrage an einen MySQL Server-Netzwerkendpunkt und gibt das erste Rowset aus den Ergebnissen zurück. Die Abfrage gibt möglicherweise mehr als ein Rowset zurück, aber nur das erste Rowset wird für den Rest der Kusto-Abfrage verfügbar gemacht.

Das Plug-In wird mit dem evaluate Operator aufgerufen.

Wichtig

Das mysql_request Plug-In ist standardmäßig deaktiviert. Führen Sie den Befehl aus, um das .enable plugin mysql_requestPlug-In zu aktivieren. Verwenden Sie .show plugin Verwaltungsbefehle, um zu sehen, welche Plug-Ins aktiviert sind.

Syntax

evaluatemysql_request(Connectionstring,SqlQuery [,SqlParameters] ) [:OutputSchema]

Erfahren Sie mehr über Syntaxkonventionen.

Parameter

Name Typ Erforderlich BESCHREIBUNG
ConnectionString string ✔️ Die Verbindungszeichenfolge, die auf den MySQL Server-Netzwerkendpunkt zeigt. Weitere Informationen finden Sie unter Authentifizierung und Angeben des Netzwerkendpunkts.
SqlQuery string ✔️ Die Abfrage, die für den SQL-Endpunkt ausgeführt werden soll. Muss einen oder mehrere Zeilensätze zurückgeben. Nur der erste Satz wird für den Rest der Abfrage verfügbar gemacht.
SqlParameters dynamic Ein Eigenschaftenbehälterobjekt, das Schlüssel-Wert-Paare enthält, die zusammen mit der Abfrage als Parameter übergeben werden sollen.
OutputSchema Die Namen und Typen für die erwarteten Spalten der mysql_request Plug-In-Ausgabe.

Syntax: (ColumnName:ColumnType [, ...] )

Hinweis

  • Die Angabe des OutputSchemas wird dringend empfohlen, da das Plug-In in Szenarien verwendet werden kann, die andernfalls ohne es möglicherweise nicht funktionieren, z. B. bei einer clusterübergreifenden Abfrage. Das OutputSchema kann auch mehrere Abfrageoptimierungen aktivieren.
  • Ein Fehler wird ausgelöst, wenn das Laufzeitschema des ersten Zeilensatzes, der vom SQL-Netzwerkendpunkt zurückgegeben wird, nicht mit dem OutputSchema-Schema übereinstimmt.

Authentifizierung und Autorisierung

Um einen MySQL Server-Netzwerkendpunkt zu autorisieren, müssen Sie die Autorisierungsinformationen im Verbindungszeichenfolge angeben. Die unterstützte Autorisierungsmethode erfolgt über Benutzername und Kennwort.

Festlegen einer Beschriftungsrichtlinie

Das Plug-In sendet Beschriftungen für die MySql-Datenbank. Stellen Sie sicher, dass die Beschriftungsrichtlinie des Clusters Aufrufe des Typs mysqlmySqlDbUri aktiviert.

Im folgenden Beispiel wird gezeigt, wie die Beschriftungsrichtlinie für MySQL-Datenbanken definiert wird. Es wird empfohlen, die Beschriftungsrichtlinie auf bestimmte Endpunkte (my_endpoint1, my_endpoint2) einzuschränken.

[
  {
    "CalloutType": "mysql",
    "CalloutUriRegex": "my_endpoint1\\.mysql\\.database\\.azure\\.com",
    "CanCall": true
  },
  {
    "CalloutType": "mysql",
    "CalloutUriRegex": "my_endpoint2\\.mysql\\.database\\.azure\\.com",
    "CanCall": true
  }
]

Das folgende Beispiel zeigt einen .alter callout policy Befehl für mysqlCalloutType:

.alter cluster policy callout @'[{"CalloutType": "mysql", "CalloutUriRegex": "\\.mysql\\.database\\.azure\\.com", "CanCall": true}]'

Authentifizierung per Benutzername und Kennwort

Das mysql_request Plug-In unterstützt nur die Benutzernamen- und Kennwortauthentifizierung für den MySQL-Serverendpunkt und lässt sich nicht in Microsoft Entra Authentifizierung integrieren.

Der Benutzername und das Kennwort werden als Teil der Verbindungszeichenfolge mit den folgenden Parametern bereitgestellt:

User ID=...; Password=...;

Warnung

Vertrauliche oder überwachte Informationen sollten in Verbindungszeichenfolgen und Abfragen verschleiert werden, sodass sie in jeder Kusto-Ablaufverfolgung weggelassen werden. Weitere Informationen finden Sie unter Verschleierte Zeichenfolgenliterale.

Verschlüsselung und Servervalidierung

Aus Sicherheitsgründen ist bedingungslos auf Required festgelegt, SslMode wenn eine Verbindung mit einem MySQL-Server-Netzwerkendpunkt hergestellt wird. Daher muss der Server mit einem gültigen SSL/TLS-Serverzertifikat konfiguriert werden.

Angeben des Netzwerkendpunkts

Geben Sie den MySQL-Netzwerkendpunkt als Teil der Verbindungszeichenfolge an.

Syntax:

Server=FQDN [Port=Port]

Hierbei gilt:

  • FQDN ist der vollqualifizierte Domänenname des Endpunkts.
  • Port ist der TCP-Port des Endpunkts. Standardmäßig wird 3306 verwendet.

Beispiele

SQL-Abfrage für Azure MySQL-Datenbank

Im folgenden Beispiel wird eine SQL-Abfrage an eine Azure MySQL-Datenbank gesendet. Es ruft alle Datensätze von ab [dbo].[Table]und verarbeitet dann die Ergebnisse.

Hinweis

Dieses Beispiel sollte nicht als Empfehlung zum Filtern oder Projektieren von Daten auf diese Weise betrachtet werden. SQL-Abfragen sollten so erstellt werden, dass sie das kleinste mögliche Dataset zurückgeben.

evaluate mysql_request(
    'Server=contoso.mysql.database.azure.com; Port = 3306;'
    'Database=Fabrikam;'
    h'UID=USERNAME;'
    h'Pwd=PASSWORD;',
    'select * from `dbo`.`Table`') : (Id: int, Name: string)
| where Id > 0
| project Name

SQL-Abfrage an eine Azure MySQL-Datenbank mit Änderungen

Das folgende Beispiel sendet eine SQL-Abfrage an eine Azure MySQL-Datenbank, die alle Datensätze von [dbo].[Table]abruft, während eine weitere datetime Spalte angefügt wird, und verarbeitet die Ergebnisse dann auf der Kusto-Seite. Er gibt einen SQL-Parameter (@param0) an, der in der SQL-Abfrage verwendet werden soll.

evaluate mysql_request(
    'Server=contoso.mysql.database.azure.com; Port = 3306;'
    'Database=Fabrikam;'
    h'UID=USERNAME;'
    h'Pwd=PASSWORD;',
    '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

SQL-Abfrage an eine Azure MySQL-Datenbank ohne abfragedefiniertes Ausgabeschema

Im folgenden Beispiel wird eine SQL-Abfrage ohne Ausgabeschema an eine Azure MySQL-Datenbank gesendet. Dies wird nur empfohlen, wenn das Schema unbekannt ist, da es sich möglicherweise auf die Leistung der Abfrage auswirken kann.

evaluate mysql_request(
    'Server=contoso.mysql.database.azure.com; Port = 3306;'
    'Database=Fabrikam;'
    h'UID=USERNAME;'
    h'Pwd=PASSWORD;',
    'select * from `dbo`.`Table`')
| where Id > 0
| project Name

Diese Funktion wird in Azure Monitor nicht unterstützt.