Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:✅SQL-Datenbank in Microsoft Fabric
Sie können die Fabric-REST-API verwenden, um die SQL-Datenbanküberwachungseinstellungen programmgesteuert anzuzeigen und zu konfigurieren. Die API für SQL-Überwachungseinstellungen ist eine API auf Datenbankebene, die auf einzelnen SQL-Datenbanken ausgeführt wird. Durch die Kombination der API mit PowerShell-Skripts können Sie die Überwachung konsistent für alle Datenbanken in einem Arbeitsbereich verwalten.
In diesem Artikel wird veranschaulicht, wie Sie PowerShell und die REST-API für SQL-Überwachungseinstellungen auf Datenbankebene verwenden, um Überwachungseinstellungen für SQL-Datenbanken in einem Fabric-Arbeitsbereich abzurufen und zu aktualisieren.
Voraussetzungen
- Sie benötigen eine bestehende Fabric-Kapazität. Falls dies nicht der Fall ist, können Sie eine Fabric-Testversion starten.
- Sie können einen vorhandenen Arbeitsbereich verwenden oder einen neuen Fabric-Arbeitsbereich mit einer oder mehreren SQL-Datenbanken erstellen.
- Sie müssen Mitglied der Rollen "Administrator", "Mitglied" oder "Mitwirkender" für den Arbeitsbereich sein, um Überwachungseinstellungen zu verwalten.
- PowerShell 5.1 oder PowerShell 7.4 und höher.
- Das Az PowerShell-Modul. Führen Sie
Install-Module azin PowerShell aus, um die Installation auszuführen.
Überwachen von REST-API-Endpunkten
Die SQL-Überwachungseinstellungen-API bietet zwei Vorgänge zum Verwalten der Überwachung in einzelnen SQL-Datenbanken:
| Vorgang | Methode | URI |
|---|---|---|
| Abrufen von SQL-Überwachungseinstellungen | GET |
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/sqlDatabases/{sqlDatabaseId}/settings/sqlAudit |
| Aktualisieren der SQL-Überwachungseinstellungen | PATCH |
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/sqlDatabases/{sqlDatabaseId}/settings/sqlAudit |
Der Get-Vorgang erfordert SQLDatabase.Read.All, SQLDatabase.ReadWrite.All oder Item.Read.AllItem.ReadWrite.All-delegierten Berechtigungsbereich. Der Aktualisierungsvorgang erfordert SQLDatabase.ReadWrite.All oder Item.ReadWrite.All delegierten Bereich. Beide Vorgänge unterstützen Benutzeridentitäten, Dienstprinzipale und verwaltete Identitäten.
Eigenschaften von Auditeinstellungen
Das Überwachungseinstellungsobjekt enthält die folgenden Eigenschaften:
| Eigentum | Typ | Beschreibung |
|---|---|---|
auditActionsAndGroups |
string[] | Überprüfen Sie Aktionen und Gruppen, die erfasst werden sollen. Voreinstellung: BATCH_COMPLETED_GROUP, FAILED_DATABASE_AUTHENTICATION_GROUP, SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP. |
predicateExpression |
Schnur | Ein T-SQL-Prädikatausdruck, der zum Filtern von Überwachungsereignissen verwendet wird. Schließt beispielsweise statement not like '[select ]%' SELECT-Anweisungen aus. |
retentionDays |
Integer | Anzahl der Tage, die Prüfprotokolle aufbewahrt werden sollen.
0 gibt eine unbestimmte Aufbewahrung an. |
state |
Schnur | Überwachungsstatus: Enabled oder Disabled. Wenn Sie die Überwachung zum ersten Mal aktivieren, ohne andere Eigenschaften anzugeben, verwendet das System Standardwerte. |
storageEndpoint |
Schnur | (Schreibgeschützt) Der OneLake-Speicherendpunkt, der Überwachungsprotokolle speichert. |
Anzeigen von Überwachungseinstellungen für alle Datenbanken in einem Arbeitsbereich
Das folgende PowerShell-Skript listet alle SQL-Datenbanken in einem Arbeitsbereich auf und ruft die Überwachungskonfiguration für jede Datenbank ab.
Ersetzen Sie im folgenden Skript <your workspace id> durch Ihre Fabric-Arbeitsbereichs-ID. Sie können die ID eines Arbeitsbereichs in der URL finden; sie ist die eindeutige Zeichenfolge zwischen zwei / Zeichen nach /groups/ in Ihrem Browserfenster. Beispiel: 00001111-aaaa-2222-bbbb-3333cccc4444 in https://fabric.microsoft.com/groups/00001111-aaaa-2222-bbbb-3333cccc4444/.
Import-Module Az.Accounts
Connect-AzAccount
$workspaceId = '<your workspace id>'
$baseUri = "https://api.fabric.microsoft.com"
# Obtain an access token
$token = (Get-AzAccessToken -ResourceUrl "https://api.fabric.microsoft.com")
$secureToken = $token.Token | ConvertFrom-SecureString -AsPlainText
$headers = @{
"Authorization" = "Bearer $secureToken"
"Content-Type" = "application/json"
}
# List all SQL databases in the workspace
$databasesUri = "$baseUri/v1/workspaces/$workspaceId/sqlDatabases"
$databases = @()
$continuationToken = $null
do {
$url = $databasesUri
if ($continuationToken) {
$encoded = [System.Web.HttpUtility]::UrlEncode($continuationToken)
$url = "$url`?continuationToken=$encoded"
}
$response = Invoke-RestMethod -Method GET -Uri $url -Headers $headers
if ($response.value) { $databases += $response.value }
$continuationToken = $response.continuationToken
} while ($continuationToken)
Write-Host "Found $($databases.Count) SQL databases."
# Retrieve audit settings for each database
$results = @()
foreach ($db in $databases) {
try {
$auditUri = "$baseUri/v1/workspaces/$workspaceId/sqlDatabases/$($db.id)/settings/sqlAudit"
$audit = Invoke-RestMethod -Method GET -Uri $auditUri -Headers $headers
$results += [PSCustomObject]@{
DatabaseName = $db.displayName
DatabaseId = $db.id
State = $audit.state
RetentionDays = $audit.retentionDays
AuditActionsAndGroups = ($audit.auditActionsAndGroups -join "; ")
PredicateExpression = $audit.predicateExpression
}
}
catch {
$results += [PSCustomObject]@{
DatabaseName = $db.displayName
DatabaseId = $db.id
State = "ERROR"
RetentionDays = ""
AuditActionsAndGroups = ""
PredicateExpression = $_.Exception.Message
}
}
}
$results | Format-Table -AutoSize
Konfigurieren der Überwachung für alle Datenbanken in einem Arbeitsbereich
Nachdem Sie den aktuellen Überwachungsstatus überprüft haben, verwenden Sie das folgende Skript, um die Überwachung konsistent für alle Datenbanken in einem Arbeitsbereich zu konfigurieren.
Ersetzen Sie <your workspace id> durch Ihre Fabric-Arbeitsbereichs-ID. Ändern Sie das $auditPayload Objekt so, dass es ihrer gewünschten Überwachungskonfiguration entspricht.
Import-Module Az.Accounts
Connect-AzAccount
$workspaceId = '<your workspace id>'
$baseUri = "https://api.fabric.microsoft.com"
# Obtain an access token
$token = (Get-AzAccessToken -ResourceUrl "https://api.fabric.microsoft.com")
$secureToken = $token.Token | ConvertFrom-SecureString -AsPlainText
$headers = @{
"Authorization" = "Bearer $secureToken"
"Content-Type" = "application/json"
}
# Define the audit configuration to apply
$auditPayload = @{
state = "Enabled"
auditActionsAndGroups = @(
"BATCH_COMPLETED_GROUP",
"FAILED_DATABASE_AUTHENTICATION_GROUP",
"SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP"
)
retentionDays = 10
predicateExpression = "statement not like '[select ]%'"
} | ConvertTo-Json -Depth 5
# List all SQL databases in the workspace
$databasesUri = "$baseUri/v1/workspaces/$workspaceId/sqlDatabases"
$databases = @()
$continuationToken = $null
do {
$url = $databasesUri
if ($continuationToken) {
$encoded = [System.Web.HttpUtility]::UrlEncode($continuationToken)
$url = "$url`?continuationToken=$encoded"
}
$response = Invoke-RestMethod -Method GET -Uri $url -Headers $headers
if ($response.value) { $databases += $response.value }
$continuationToken = $response.continuationToken
} while ($continuationToken)
Write-Host "Configuring auditing for $($databases.Count) SQL databases..."
foreach ($db in $databases) {
try {
$auditUri = "$baseUri/v1/workspaces/$workspaceId/sqlDatabases/$($db.id)/settings/sqlAudit"
Invoke-RestMethod -Method PATCH -Uri $auditUri -Headers $headers -Body $auditPayload | Out-Null
Write-Host "[OK] Updated auditing for: $($db.displayName)"
}
catch {
Write-Host "[FAIL] $($db.displayName): $($_.Exception.Message)"
}
}
Bewährte Methoden
- Rufen Sie immer die aktuellen Überwachungseinstellungen mit einer
GET-Anforderung ab, bevor Sie diese mitPATCHaktualisieren, damit Sie die bestehende Konfiguration nachvollziehen können. - Fehler pro Datenbank behandeln. Wenn eine Datenbankaktualisierung fehlschlägt, fahren Sie mit der Verarbeitung der verbleibenden Datenbanken fort.
- Wiederholen Sie vorübergehende Fehler einzeln, anstatt das gesamte Massenaktualisierungsskript erneut auszuführen.
- Verwenden Sie einen Dienstprinzipal oder eine verwaltete Identität für die automatisierte oder geplante Überwachungskonfiguration in Produktionsumgebungen.