Sequence-Befehl (TMSL)

Gilt für: SQL Server 2016 und höher Analysis Services Azure Analysis Services Fabric/Power BI Premium

Verwenden Sie den Befehl Sequence, um einen aufeinanderfolgenden Satz von Vorgängen im Batchmodus auf einer instance von Analysis Services auszuführen. Der gesamte Befehl und alle zugehörigen Komponenten müssen abgeschlossen werden, damit die Transaktion erfolgreich ist.

Die folgenden Befehle können sequenziell ausgeführt werden, mit Ausnahme des Befehls Aktualisieren , der parallel ausgeführt wird, um mehrere Objekte gleichzeitig zu verarbeiten.

Anforderung

maxParallelism ist eine optionale Eigenschaft, die bestimmt, ob Aktualisierungsvorgänge sequenziell oder parallel ausgeführt werden.

Das Standardverhalten besteht darin, so viel Parallelität wie möglich zu verwenden. Durch Einbetten von Refresh in Sequence können Sie die genaue Anzahl von Threads steuern, die während der Verarbeitung verwendet werden, einschließlich der Beschränkung des Vorgangs auf nur einen Thread.

Hinweis

Die ganzzahl, die maxParallelism zugewiesen ist, bestimmt die maximale Anzahl von Threads, die während der Verarbeitung verwendet werden. Gültige Werte sind beliebige positive ganze Zahlen. Das Festlegen des Werts auf 1 entspricht nicht parallel (verwendet einen Thread).

Aktualisierung wird nur parallel ausgeführt. Wenn Sie maxParallelism so ändern, dass eine feste Anzahl von Threads verwendet wird, überprüfen Sie unbedingt die Eigenschaften des Refresh-Befehls (TMSL), um die potenziellen Auswirkungen zu verstehen. Es ist möglich, Eigenschaften so festzulegen, dass die Parallelität untergraben wird, auch wenn Sie mehrere Threads verfügbar gemacht haben. Die folgende Sequenz von Aktualisierungstypen gibt Ihnen das beste Maß an Parallelität:

  • Geben Sie zuerst Refresh für alle Objekte mit ClearValues an.

  • Geben Sie als Nächstes Aktualisieren für alle Objekte mit DataOnly an.

  • Geben Sie zuletzt Aktualisieren für alle Objekte mit Full, Calculate, Automatic oder Add an.

Bei jeder Variation wird die Parallelität unterbrochen.

{   
  "sequence":    
    {   
      "maxParallelism": 3,   
      "operations": [   
        {   
          "mergepartitions": {   
            "sources": [   
              {   
                "database": "salesdatabase",   
                "table": "Sales",   
                "partition": "partition1"   
              },   
              {   
                "database": "salesdatabase",   
                "table": "Sales",   
                "partition": "partition2"   
              }   
            ]   
          }   
        },   
        {   
          "refresh": {   
            "type": "calculate",   
            "objects": [
              {   
              "database": "salesdatabase"   
              }
            ] 
          }   
        }   
      ]   
    }      
}   

Antwort

Gibt ein leeres Ergebnis zurück, wenn der Befehl erfolgreich ist. Andernfalls wird eine XMLA-Ausnahme zurückgegeben.

Verwendung (Endpunkte)

Dieses Befehlselement wird in einer Anweisung der Execute-Methode über einen XMLA-Endpunkt hinweg verwendet und auf folgende Weise verfügbar gemacht:

  • Als XMLA-Fenster in SQL Server Management Studio (SSMS)

  • Als Eingabedatei für das PowerShell-Cmdlet invoke-ascmd

  • Als Eingabe für einen SSIS-Task oder SQL Server-Agent Auftrag

Sie können kein fertiges Skript für diesen Befehl von SSMS generieren. Stattdessen können Sie mit einem Beispiel beginnen oder ein eigenes schreiben.