Freigeben über


mysql_request plugin

Gilt für: ✅Microsoft Fabric✅Azure Data Explorer

Das mysql_request Plug-In sendet eine SQL-Abfrage an einen Azure MySQL Server-Netzwerkendpunkt und gibt das erste Rowset in den Ergebnissen zurück. Die Abfrage gibt möglicherweise mehrere 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 .enable plugin mysql_request Befehl aus, um das Plug-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 Type Erforderlich Beschreibung
ConnectionString string ✔️ Die Verbindungszeichenfolge, die auf den MySQL Server-Netzwerkendpunkt verweist. Siehe 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üsselwertpaare enthält, die zusammen mit der Abfrage als Parameter übergeben werden.
OutputSchema Die Namen und Typen für die erwarteten Spalten der mysql_request Plug-In-Ausgabe.

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

Hinweis

  • Die Angabe des OutputSchema-Schemas wird dringend empfohlen, da das Plug-In in Szenarien verwendet werden kann, die andernfalls nicht funktionieren, z. B. eine clusterübergreifende Abfrage. Das OutputSchema kann auch mehrere Abfrageoptimierungen aktivieren.
  • Ein Fehler wird ausgelöst, wenn das Laufzeitschema des vom SQL-Netzwerkendpunkt zurückgegebenen ersten Zeilensatzes 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 der Beschriftungsrichtlinie

Das Plug-In führt Legenden an die MySql-Datenbank aus. Stellen Sie sicher, dass die Popuprichtlinie des Clusters Aufrufe vom Typ mysql an das Ziel MySqlDbUri aktiviert.

Das folgende Beispiel zeigt, wie die Popuprichtlinie für MySQL-Datenbanken definiert wird. Es wird empfohlen, die Popuprichtlinie auf bestimmte Endpunkte (my_endpoint1, my_endpoint2) zu beschrä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 mysql CalloutType:

.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 an den MySQL-Serverendpunkt und lässt sich nicht in die 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 geschützte Informationen sollten von Verbindungszeichenfolge und Abfragen verschleiert werden, damit sie von jeder Kusto-Ablaufverfolgung weggelassen werden. Weitere Informationen finden Sie unter verschleierten Zeichenfolgenliteralen.

Verschlüsselung und Serverüberprüfung

Für die Sicherheit SslMode ist die Verbindung mit einem MySQL-Servernetzwerkendpunkt bedingungslos festgelegt Required . Daher muss der Server mit einem gültigen SSL/TLS-Serverzertifikat konfiguriert werden.

Angeben des Netzwerkendpunkts

Geben Sie den MySQL-Netzwerkendpunkt als Teil des 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 DB

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

Hinweis

Dieses Beispiel sollte nicht als Empfehlung zum Filtern oder Projektdaten auf diese Weise verwendet werden. SQL-Abfragen sollten erstellt werden, um möglichst kleine Datasets zurückzugeben.

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

Im folgenden Beispiel wird eine SQL-Abfrage an eine Azure MySQL-Datenbank gesendet, aus [dbo].[Table]der alle Datensätze abgerufen werden, während sie eine weitere datetime Spalte anfügen und dann die Ergebnisse auf der Kusto-Seite verarbeiten. 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 in einer 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 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