Infodatei für das Ascmd-Befehlszeilendienstprogramm-Beispiel

Aktualisiert: 12. Dezember 2006

Mit dem Befehlszeilendienstprogramm ascmd können Datenbankadministratoren XMLA-Skripts, MDX-Abfragen oder DMX-Anweisungen für eine Instanz von Microsoft SQL Server 2005 Analysis Services (SSAS) ausführen. Dieses Befehlszeilendienstprogramm enthält Funktionalitäten für Analysis Services, die denen des Dienstprogramms sqlcmd ähneln, das in SQL Server 2005 enthalten ist. Weitere Informationen finden Sie im Thema sqlcmd (Dienstprogramm) in SQL Server 2005. Die Ausführungsergebnisse des Skripts, der Abfrage oder der Anweisung können zusammen mit den relevanten SQL Server Profiler-Ablaufverfolgungsinformationen in einer Datei gespeichert werden. Das Befehlszeilendienstprogramm ascmd wird standardmäßig in folgendem Verzeichnis installiert:

<system_drive>\Programme\Microsoft SQL Server\90\Samples\Analysis Services\Administrator\ascmd

Szenarien

Die folgenden Szenarien stellen Beispiele für die Verwendung des Befehlszeilendienstprogramms ascmd dar.

Verarbeiten einer Partition über ein Drittanbietertool

Datenbankadministratoren müssen im Rahmen eines über Nacht ausgeführten Extrahierungs-, Transformations- und Ladevorgangs (ETL) Partitionen und Dimensionen verarbeiten. Da das ETL-Tool kein SQL Server-Tool ist, kann der Datenbankadministrator nicht die im SQL Server-Agent integrierte Unterstützung für XMLA-Skripts verwenden und auch kein SQL Server 2005 Integration Services (SSIS)-Paket ausführen. Der Datenbankadministrator benötigt eine automatisierte Lösung, für die das Drittanbietertool verwendet werden kann. Bei dieser Lösung handelt es sich um das Befehlszeilendienstprogramm zum Ausführen eines XMLA-Skripts. Das Dienstprogramm wird anschließend vom Drittanbietertool aufgerufen. Der Datenbankadministrator downloadet das ascmd-Befehlszeilendienstprogramm-Beispiel und kompiliert es. Nach der Kompilierung kann der Datenbankadministrator mithilfe des Befehlszeilendienstprogramms ascmd XMLA-Skripts ausführen, die Partitionen und Dimensionen verarbeiten.

Sichern einer OLAP-Datenbank über ein Drittanbietertool

Ein anderer Datenbankadministrator in demselben Unternehmen muss vielleicht die Sicherung einer Analysis Services-Datenbank automatisieren. Auch diese Aufgabe muss von der Befehlszeile aus ausgeführt werden, da es sich bei der vom Unternehmen verwendeten Planungssoftware nicht um ein SQL Server-Tool handelt. Der Datenbankadministrator generiert das entsprechende XMLA-Skript (mithilfe von SQL Server Management Studio). Anschließend wird das XMLA-Skript von der Terminplanungssoftware des Drittanbieters mit dem Befehlszeilendienstprogramm ascmd ausgeführt, um die OLAP-Datenbank zu sichern.

Verwenden von XMLA während eines Installationsvorgangs

Ein Entwickler, der für einen unabhängigen Softwarehersteller (Independent Software Vendor, ISV) tätig ist, erhält den Auftrag, die Ausführung eines XMLA-Skripts direkt in die Installation des Produkts der Firma zu integrieren. Der Entwickler muss ein XMLA-Skript ausführen und den Status abrufen (sowie Ereignisse nachverfolgen), um sicherzugehen, dass die Analysis Services-Datenbank richtig erstellt wurde. Diese Aufgabe kann mithilfe des Befehlszeilendienstprogramms ascmd ausgeführt werden.

Sprachen

  • C#, die Sprache in der ascmd selbst codiert ist.
  • Batchdateibefehle, mit denen das Befehlszeilendienstprogramm ascmd gestartet wird.

Voraussetzungen

Damit Sie das Befehlszeilendienstprogramm ascmd effektiv verwenden können, sollten Sie die gesamte im Folgenden aufgeführte Software, oder zumindest einen Teil davon, installiert haben:

  • Microsoft SQL Server 2005 Analysis Services (SSAS)
    Es muss eine Instanz von Analysis Services installiert sein und ausgeführt werden, weil mit dem Befehlszeilendienstprogramm ascmd eine Verbindung mit einer Analysis Services-Instanz hergestellt wird und MDX-Abfragen, XMLA-Skripts und DMX-Anweisungen ausgeführt werden.
  • SQL Server Management Studio und Business Intelligence Development Studio
    Diese beiden Arbeitsumgebungen bieten eine unterstützende Infrastruktur, in der Sie jede auf Analysis Services bezogene Aufgabe ausführen können. Für jede beliebige Aufgabe können Sie über die Benutzeroberfläche oder programmgesteuert auf die Implementierung zugreifen.
  • Analysis Management Objects (AMO)
    AMO ist zum Ausführen des Befehlszeilendienstprogramms ascmd auf einem Computer erforderlich, auf dem Analysis Services nicht installiert ist. AMO kann aus dem SQL Server 2005 Feature Pack installiert werden, das vom Microsoft Download Center unter https://www.microsoft.com/downloads gedownloadet werden kann.
  • Microsoft Visual Studio 2005 oder .NET Framework SDK 2.0
    Es empfiehlt sich, Visual Studio 2005 beim Erstellen bzw. Anpassen der Beispielanwendung ascmd zu verwenden. Wenn Visual Studio 2005 nicht verfügbar ist, verwenden Sie stattdessen .NET Framework SDK 2.0. Das .NET Framework SDK enthält MSBuild.exe (siehe “Kompilieren des Beispiels” weiter unten).

Argumente

Die folgenden Argumente werden an der Befehlszeile für ascmd unterstützt.

  • –Ulogin_id
    Die Anmelde-ID, bei der nach Groß- und Kleinschreibung unterschieden wird.

    ms365187.note(de-de,SQL.90).gifHinweis:
    Die Verwendung von login_id unterscheidet sich für sqlcmd und ascmd. In sqlcmd steht login_id für einen SQL Server-Anmeldnamen, in ascmd steht es für einen Windows-Anmeldenamen.

    Für den TCP/IP-Zugriff unterstützt Analysis Services nur vertrauenswürdige Verbindungen. Wenn der –U-Parameter (zusammen mit dem entsprechenden mit dem –P-Parameter angegebenen Kennwort) angegeben wird, meldet sich das Befehlszeilendienstprogramm ascmd beim Windows-Betriebssystem mit dem angegebenen Konto an und nimmt dann beim Ausführen des XMLA-Skripts, der MDX-Abfrage oder der DMX-Anweisung die Identität des Kontos an. Die Anmelde-ID muss das Format <domain>\<username> aufweisen, und die Domäne muss angegeben werden. Wird –U nicht angegeben, basiert die Authentifizierung auf dem Windows-Konto des Benutzers, der das Befehlszeilendienstprogramm ascmd ausführt.

    Wenn mit dem –S-Parameter eine http- oder https-Verbindung angegeben wird, meldet sich das Befehlszeilendienstprogramm ascmd nicht beim Windows-Betriebssystem an. Stattdessen werden die Parameter –U und –P (sofern vorhanden) in die Verbindungszeichenfolge für den IIS-Server (Internet Information Services, Internetinformationsdienste) aufgenommen. Je nach der vorliegenden IIS-Konfiguration können die Parameter –U und –P für die Standardauthentifizierung verwendet werden. Weitere Informationen zum “UID”-Verbindungszeichenfolgen-Parameter finden Sie in der SQL Server 2005-Onlinedokumentation im Thema zur AdomdConnection-Klasse.

  • –Ppassword
    Ein vom Benutzer angegebenes, zum –U-Parameter passendes Kennwort. Wenn der Parameter –U angegeben wird, der –P-Parameter jedoch nicht, wird davon ausgegangen, dass das Kennwort leer (eine Zeichenfolge mit der Länge Null) ist. Wenn der –P-Parameter angegeben wird, jedoch nicht der –U-Parameter, wird der –P-Parameter ignoriert.

    ms365187.security(de-de,SQL.90).gifSicherheitshinweis:
    Verwenden Sie kein leeres Kennwort. Verwenden Sie ein sicheres Kennwort. Weitere Informationen finden Sie in der SQL Server 2005-Onlinedokumentation unter Sichere Kennwörter. Das mit dem –P-Parameter angegebene Kennwort wird in der Skript-, Abfrage- oder Anweisungsdatei als Klartext gespeichert. Es ist für jeden sichtbar, der Einblick auf den Computerbildschirm hat oder die Datei selbst lesen kann. Wenn Sie dieses Feature verwenden, sollten Sie ACLs für die Dateien festlegen oder andere Sicherheitstechniken verwenden, um sicherzustellen, dass die Dateien nur von vertrauenswürdigen Benutzern gelesen werden können.
  • –Sserver\instance oder –Shttp[s]://server[:port]/virtualdirectory/msmdpump.dll
    Gibt die Analysis Services-Instanz an, mit der das Befehlszeilendienstprogramm ascmd eine Verbindung herstellt und auf der es ausgeführt wird. Wenn der –P-Parameter nicht angegeben wird, stellt das Befehlszeilendienstprogramm ascmd eine Verbindung mit der Standardinstanz von Analysis Services auf dem lokalen Computer her, auf dem TCP ausgeführt wird (Verbindung mit localhost), und führt das XMLA-Skript, die MDX-Abfrage oder die DMX-Anweisung aus.
  • –ddatabase
    Gibt die Datenbank an, für die eine MDX-Abfrage oder eine DMX-Anweisung ausgeführt wird. Der –d-Parameter wird ignoriert, wenn das Befehlszeilendienstprogramm ascmd ein XMLA-Skript ausführt, da in XMLA-Skripts der Datenbankname bereits eingebettet ist.
  • –tquery-timeout
    Gibt an, nach wie vielen Sekunden beim Ausführen eines XMLA-Skripts, einer MDX-Abfrage oder einer DMX-Anweisung ein Timeout auftritt. Das Befehlszeilendienstprogramm ascmd fügt der Verbindungszeichenfolge die TIMEOUT =<query-timeout>-Klausel hinzu.
  • –tcconnect-timeout
    Gibt an, nach wie vielen Sekunden bei der ascmd-Verbindung mit der Analysis Services-Instanz ein Timeout auftritt. Das Befehlszeilendienstprogramm ascmd fügt der Verbindungszeichenfolge die CONNECT TIMEOUT =<connect-timeout>-Klausel hinzu.
  • –iinput-file
    Gibt die Datei an, in der das XMLA-Skript, die MDX-Abfrage oder die DMX-Anweisung enthalten ist. Sie müssen entweder für den –i-Parameter oder für den –Q-Parameter einen Wert angeben, wenn Sie das Befehlszeilendienstprogramm ascmd verwenden. Wenn Sie weder den –i-Parameter noch den –Q-Parameter angeben bzw. wenn Sie beide Parameter angeben, wird ein Fehler generiert.

    ms365187.note(de-de,SQL.90).gifHinweis:
    Im Unterschied zum Befehlszeilendienstprogramm sqlcmd (das mehrere Eingabedateien verarbeiten kann), kann das Befehlszeilendienstprogramm ascmd jeweils nur eine Eingabedatei verarbeiten. Sollen mehrere Eingabedateien verarbeitet werden, muss jede Datei separat aufgerufen und ausgeführt werden.

    Bei der mit dem –i- oder dem –Q-Parameter angegebenen Eingabedatei muss es sich um eine gültige XML-Struktur handeln, und Sonderzeichen müssen HTML-codiert sein. Wenn Sie beispielsweise ein kaufmännisches Und-Zeichen (&) im Text verwenden, muss dieses als &amp; codiert werden. [Product].&1922] wird beispielsweise als [Product].&amp;[1922] codiert. Ebenso müssen Kleiner als-Zeichen (<) als &lt;, Größer als-Zeichen (>) als &gt; und doppelte Anführungszeichen (") als &quot; codiert werden. Dies muss bei MDX-Abfragen und DMX-Anweisungen beachtet werden, da in der Syntax der Elementschlüssel das kaufmännische Und-Zeichen (&) verwendet wird.

    ms365187.note(de-de,SQL.90).gifHinweis:
    Wenn der Eingabetext anscheinend kein XMLA-Skript ist, d. h,. er beginnt nicht mit einem gültigen XMLA-Befehl wie <Statement> oder <Create> (eine vollständige Liste finden Sie weiter unten in diesem Dokument), nimmt das Befehlszeilendienstprogramm ascmd an, dass der Text eine <Anweisung> ist, codiert den Text als HTML und schließt ihn in ein XML-Elementtag der Form <Statement> … </Statement> ein. Dies geschieht aus Gründen der Benutzerfreundlichkeit, um das Ausführen von MDX-Abfragen und DMX-Anweisungen zu erleichtern. Wenn Sie <Statement>-Elemente verwenden und den HTML-Text selbst schreiben möchten, ist dies auch möglich. Beliebige gültige XMLA-Befehle werden vom Befehlszeilendienstprogramm ascmd akzeptiert.

    In einer Eingabedatei können mehrere durch GO-Befehle getrennte Batches vorhanden sein. In jedem Batch innerhalb einer Eingabedatei können ein XMLA-Skript, eine MDX-Abfrage oder eine DMX-Anweisung enthalten sein. Jeder GO-Befehl muss in einer einzelnen Zeile angezeigt werden. Wenn ein GO-Befehl gefunden wurde, wird die dem GO-Befehl vorausgehende Eingabe vom System an den Server gesendet. Das Ende des Eingabedatenstromes wird durch einen implizierten GO-Befehl angegeben. Die generierte Ausgabedatei wird durch Umbruch der zurückgegebenen XML-Datenströme mit einem <multiple-batches>-Element formatiert. Ein Beispiel für eine Ausgabedatei, in der mehrere Batches enthalten sind, finden Sie in Szenario 11.

    Jeder Batch wird eigenständig entweder erfolgreich ausgeführt, oder es treten Fehler auf. Der Rückgabestatus jedes Batches wird in der Ausgabedatei aufgezeichnet, die Sie analysieren müssen, um den Erfolg oder Fehler jedes Batches zu bestimmen.

  • –ooutput-file | NUL | NUL:filename
    Gibt die Datei an, die (in XML) die Ergebnisse des XMLA-Skripts oder die von der MDX-Abfrage oder der DMX-Anweisung zurückgegebene Zellmenge enthält. Wenn die angegebene Datei bereits vorhanden ist, wird sie automatisch überschrieben. Dateinamen, die Leerzeichen enthalten, müssen in Anführungszeichen ("") eingeschlossen werden. Wenn der Dateiname ungültig ist, wird eine Fehlermeldung generiert und das Befehlszeilendienstprogramm ascmd beendet.

    Das Befehlszeilendienstprogramm ascmd bietet keine Unterstützung für das gleichzeitige Schreiben mehrerer ascmd-Prozesse in dieselbe Datei. Wird dies dennoch versucht, wird die Dateiausgabe beschädigt, oder sie ist fehlerhaft.

    Wenn die angegebene Ausgabedatei NUL oder NUL:filename ist, werden die Ausführungsergebnisse verworfen, sofern nicht mit dem –T-Parameter eine Ablaufverfolgungsdatei angegeben wird. In diesem Fall werden die Ausführungsergebnisse in der Ablaufverfolgungsdatei gespeichert. Das Angeben einer NUL-Ausgabedatei mit dem –T-Parameter ist sinnvoll, wenn mit dem –Tl-Parameter eine Duration-Ablaufverfolgungsebene angegeben wird.

    Sie können z. B. eine Serie von MDX-Abfragen erstellen und sie mit dem Befehlszeilendienstprogramm ascmd ausführen, die Ausgabe (die ggf. sehr umfangreich sein kann) ignorieren, die Abfragedauern in einer Ablaufverfolgungsdatei aufzeichnen und dann diese Werte aus der Ablaufverfolgungsdatei in eine Datenbank laden. Dies ermöglicht Ihnen die Auswertung von Leistungsschwankungen über einen längeren Zeitraum. Alternativ können Sie mit dem –Tl-Parameter die Duration-result-Ablaufverfolgungsebene verwenden, um sowohl die Dauer als auch das Ausführungsergebnis in der Ablaufverfolgungsdatei zu speichern.

    ms365187.note(de-de,SQL.90).gifHinweis:
    Das Befehlszeilendienstprogramm ascmd unterstützt die internationale Codierung. Eingabe- und Ausgabedateien verwenden die UTF-8-Codierung mit aktivierten Bytereihenfolgemarken. Wenn Ihr Text-Editor UTF-8 nicht unterstützt und die MDX-Abfrage, das XMLA-Skript oder die DMX-Anweisung internationale Zeichen enthält, können Sie mit dem Editor die Eingabedatei in das UTF-8-Format konvertieren. Wenn Sie die Eingabedatei in UTF-8 konvertieren möchten, öffnen Sie die Datei im Editor, wählen Sie im Menü Datei die Option Speichern unter aus, und wählen Sie dann im Feld Codierung die Option UTF-8 aus. Anschließend können Sie die Datei zusammen mit dem –i-Parameter verwenden. Ausgabe- und Ablaufverfolgungsdateien (–o und –T) werden immer mit UTF-8-Codierung und Bytereihenfolgemarken geschrieben, um sicherzustellen, dass die Unicode-Zeichen beibehalten werden.
  • –Ttrace-file
    Gibt die Datei an, die Analysis Services-Ablaufverfolgungsereignisse erhält, die generiert werden, wenn das Befehlszeilendienstprogramm ascmd das XMLA-Skript, die MDX-Abfrage oder die DMX-Anweisung ausführt. Wenn die Datei bereits vorhanden ist, wird sie automatisch überschrieben (mit Ausnahme der Ablaufverfolgungsdateien, die mit den Parametereinstellungen –TlDuration und –TlDuration-result erstellt wurden). Dateinamen, die Leerzeichen enthalten, müssen in Anführungszeichen ("") eingeschlossen werden. Wenn der Dateiname ungültig ist, wird eine Fehlermeldung generiert und das Befehlszeilendienstprogramm ascmd beendet.

    Das Befehlszeilendienstprogramm ascmd bietet keine Unterstützung für das gleichzeitige Schreiben mehrerer ascmd-Prozesse in dieselbe Datei. Wird dies dennoch versucht, wird die Dateiausgabe beschädigt, oder sie ist fehlerhaft. Wenn der –T-Parameter nicht angegeben wird, wird die Ablaufverfolgungsausgabe nicht erfasst, und die Parameter –Tf, –Tl, Td und –Tt werden ignoriert.

    ms365187.note(de-de,SQL.90).gifHinweis:
    Der –T-Parameter ist bei Verwendung des http- oder https-Zugriffs nicht verfügbar. Sie müssen durch Angeben des –S-Parameters eine gewöhnliche Client/Server-Verbindung verwenden.
  • –xcextended-connect-string
    Gibt eine erweiterte Verbindungszeichenfolge an, die ohne Prüfung von Werten direkt in die Verbindungszeichenfolge eingefügt wird. Die Zeichenfolge darf weder am Anfang noch am Ende ein Semikolon (;) aufweisen. Mit der folgenden erweiterten Verbindungszeichenfolge wird z. B. die zwischen dem Server und dem ascmd-Prozess verwendete Paketgröße von 4096 in 16384 geändert. Außerdem enthält sie eine Anforderung, dass das Gebietsschema des Clients auf en-US (US-Englisch) festgelegt wird:

    -xc "Packet Size=16384;LocaleIdentifier=1033"

    Standardmäßig fügt das Befehlszeilendienstprogramm ascmd keine erweiterten Verbindungszeichenfolgen-Informationen hinzu. Obwohl viele der Optionen des Befehlszeilendienstprogramms ascmd als erweiterte Verbindungszeichenfolgen-Einstellungen implementiert werden können (z. B. durch direktes Festlegen von Database=<database name>), sollten Sie nach Möglichkeit immer die Standardoptionen von ascmd verwenden und Einstellungen für eine erweiterte Verbindungszeichenfolge nur verwenden, wenn kein anderer Mechanismus verfügbar ist.

  • –Tftext | csv
    Gibt das Dateiformat für den –T-Parameter an (falls dieser Parameter angegeben wird). Der Standardwert lautet csv. Die folgenden Optionen sind verfügbar:

    • Textdateien werden in einem Textformat geschrieben. Beispiele für das Format:
      <aktuelle Uhrzeit> <Ereignisklasse>.<Ereignisunterklasse>, [Name=Wert]
    • csv-Dateien werden in einem durch Trennzeichen getrennten Format geschrieben. Als Standardspaltentrennzeichen wird | (Pipezeichen oder senkrechter Strich) verwendet. Mithilfe des –Td-Parameters kann das Standardtrennzeichen für CSV-Dateien geändert werden. In der ersten Zeile der Datei werden die Spaltenüberschriften für die Werte angegeben.
  • –Tddelim-char
    Gibt ein einzelnes Zeichen als Trennzeichen für die Ablaufverfolgungsdatei an, wenn mit dem –Tf-Parameter csv als Format für die Ablaufverfolgungsdatei angegeben wird. Standardmäßig wird | (Pipezeichen oder senkrechter Strich) verwendet.
  • –Tttrace-timeout
    Gibt an, wie viele Sekunden das Analysis Services-Modul wartet, bevor die Ablaufverfolgung beendet wird (wenn der –T-Parameter angegeben wird). Die Ablaufverfolgung gilt als beendet, wenn während des angegebenen Zeitraums keine Meldungen zur Ablaufverfolgung aufgezeichnet wurden. Standardmäßig beträgt der Timeoutwert für die Ablaufverfolgung 5 Sekunden.
  • –Tltrace-level
    Gibt an, welche Daten in der Ablaufverfolgungsdatei gesammelt und aufgezeichnet werden. Für diesen Parameter sind die folgenden fünf Werte möglich:

    • High – zeichnet alle Ablaufverfolgungsereignisse auf; dies ist die Standardeinstellung.
    • Medium – zeichnet alle Ablaufverfolgungsereignisse mit Ausnahme von ProgressReportCurrent- und Benachrichtigungsereignissen auf.
    • Low – zeichnet nur Ablaufverfolgungsereignisse auf, die das Wort "End" oder "Error" enthalten.
    • Duration – zeichnet keine Ablaufverfolgungsereignisse auf, sondern bestimmt die Dauer der Ausführung des Skripts, der Abfrage oder der Anweisung durch den ascmd-Prozess. Schreibt einen einzigen Eintrag in die Ausführungsdatei, der die aktuelle Uhrzeit, die Dauer, den Ausführungstext, die Datenbank und den Servernamen enthält.
    • Duration-result – zeichnet dieselben Informationen wie die Duration-Einstellung auf und gibt zusätzlich in der letzten Spalte der Ablaufverfolgungsdatei das Ergebnis der Ausführung an.
    ms365187.note(de-de,SQL.90).gifHinweis:
    Die mit den Einstellungen Duration und Duration-result erstellten Ablaufverfolgungsdateien werden nicht bei jeder Ausführung überschrieben (im Unterschied zu Ablaufverfolgungsdateien, die mit den Einstellungen High, Medium und Low generiert werden). Wenn bereits eine Ablaufverfolgungsdatei vorhanden ist, wird bei den Einstellungen Duration und Duration-result die Datei stattdessen geöffnet, und die neuen Werte werden an das Ende der Datei angehängt. Ist die Ablaufverfolgungsdatei noch nicht vorhanden, wird sie erstellt.
  • –Q*"cmdline query or script"*
    Gibt das eigentliche Skript, die Abfrage oder die Anweisung direkt an der Befehlszeile und nicht in einer Datei an.

    ms365187.note(de-de,SQL.90).gifHinweis:
    Das Befehlszeilendienstprogramm sqlcmd unterstützt mit dem –q-Parameter eine weitere Möglichkeit zum Angeben der Eingabeabfrage. Da diese Option aus sysinput liest, kann sie jedoch nur geschrieben werden, wenn Sie weitere Sprachkonstrukte hinzufügen. So verwendet sqlcmd z. B. “go” und “exit”, um sysinput-Befehle zu steuern. Diese zusätzliche Möglichkeit zum Angeben der Abfrageeingabe wird vom Befehlszeilendienstprogramm ascmd nicht unterstützt.
  • –v var=Wert...
    Gibt zusätzliche Skriptvariablen an. Jede Variable besteht aus einem var=Wert-Paar. Wenn der Wert eingebettete Leerzeichen oder Steuerzeichen enthält, muss er in doppelte Anführungszeichen (") eingeschlossen werden. Beispiel:

    -v maxparallel=4 option= "degree of freedom"

    Sie können kein, ein oder mehrere var = Wert-Paare angeben.

  • –? oder /?
    Zeigt die Syntaxzusammenfassung der Optionen des Befehlszeilendienstprogramms ascmd an.

Schlüsselverschlüsselung und Kompilieren des Beispiels

Generieren Sie die Schlüsseldatei mithilfe der folgenden Anweisungen, falls Sie noch keine Schlüsseldatei mit starkem Namen erstellt haben.

So generieren Sie eine Schlüsseldatei mit starkem Namen

  1. Öffnen Sie eine Microsoft Visual Studio 2005-Eingabeaufforderung. Klicken Sie auf Start, zeigen Sie auf Alle Programme und danach auf Microsoft .NET Framework SDK 2.0, und klicken Sie anschließend auf SDK-Eingabeaufforderung.

    – oder –

    Öffnen Sie eine Microsoft .NET Framework-Eingabeaufforderung. Klicken Sie auf Start, zeigen Sie auf Alle Programme und dann auf Microsoft .NET Framework SDK 2.0, und klicken Sie anschließend auf SDK-Eingabeaufforderung.

  2. Wechseln Sie an der Eingabeaufforderung mit dem Befehl CD (Verzeichnis wechseln) im Eingabeaufforderungsfenster vom aktuellen Verzeichnis zu dem Ordner, in dem die Beispiele installiert sind.

    ms365187.note(de-de,SQL.90).gifHinweis:
    Klicken Sie auf Start, zeigen Sie auf Alle Programme, Microsoft SQL Server und auf Dokumentation und Lernprogramme, und klicken Sie dann auf Beispielordner, um den Ordner zu ermitteln, in dem sich die Beispiele befinden. Wenn das Standardverzeichnis verwendet wurde, befinden sich die Beispiele im Verzeichnis <Systemlaufwerk>:\Programme\Microsoft SQL Server\100\Samples.
  3. Führen Sie an der Eingabeaufforderung den folgenden Befehl zum Generieren der Schlüsseldatei aus:

    sn -k SampleKey.snk

    ms365187.note(de-de,SQL.90).gifWichtig:
    Weitere Informationen zum Schlüsselpaar mit starkem Namen finden Sie unter "Security Briefs: Starke Namen und Sicherheit im .NET Framework" unter ".NET-Entwicklung" auf der MSDN-Website.

Zum Kompilieren des Beispiels kann eine der beiden folgenden Methoden verwendet werden.

  • Mit Visual Studio 2005 : Kompilieren Sie das Beispiel mithilfe der bereitgestellten Visual Studio-Projektmappe im Ordner <install_path>\Samples\Analysis Services\Administrator\ascmd\cs.

  • Mit MSBuild, das im Lieferumfang des .NET Framework SDK 2.0 enthalten ist: Kompilieren Sie das Beispiel, indem Sie die folgenden Befehle an der Eingabeaufforderung ausführen:

    cd Analysis Services\Administrator\ascmd\CS\ascmd
    msbuild ascmd.csproj /nologo /v:quiet /p:Configuration=Debug;Platform=<platform>
    
ms365187.note(de-de,SQL.90).gifHinweis:
Microsoft Visual Studio wird auf x86- und x64-basierten Computern uneingeschränkt unterstützt, jedoch nicht auf Itanium-basierten Computern. Wenn das Befehlszeilendienstprogramm ascmd kompiliert wurde, kann das Befehlszeilendienstprogramm ascmd auf einem beliebigen x86-, x-64- oder Itanium-basierten Computer ausgeführt werden.

Im obigen Code kann der <platform>-Parameterwert x86 für 32-Bit-Computer, x64 für x64-basierte Computer oder Itanium für IA-64-basierte Computer sein. Die bewährte Methode besteht darin, die entsprechende Version des Befehlszeilendienstprogramms ascmd zu kompilieren, da beim Ausführen von 32-Bit-Code auf einem 64-Bit-Computer die Leistung beeinträchtigt werden kann.

ms365187.note(de-de,SQL.90).gifHinweis:
Wenn Sie das Befehlszeilendienstprogramm ascmd auf einem Computer kompilieren, dessen Architektur sich von der des Zielcomputers unterscheidet (wenn das Befehlszeilendienstprogramm ascmd z. B. auf einem 32-Bit-Computer mit dem x64- bzw. Itanium-Parameterwert kompiliert wird), werden drei Warnmeldungen ausgegeben, in denen darauf verwiesen wird, dass drei verschiedene System-DLLs nicht verfügbar sind ("…hat einen anderen Zielprozessor"). Hierbei handelt es sich um ein normales und erwartetes Verhalten. Nachdem Sie das Befehlszeilendienstprogramm ascmd kompiliert haben, kopieren Sie die kompilierte ausführbare Datei auf den Zielserver (auf dem die entsprechenden DLLs verfügbar sind), und führen Sie die Datei auf dem Zielserver aus.

Verwenden von Skript- und Umgebungsvariablen

Das Befehlszeilendienstprogramm ascmd unterstützt vom System reservierte und benutzerdefinierte Skriptvariablen, die Sie in XMLA-Skripts, MDX-Abfragen und DMX-Anweisungen verwenden können. Die Werte für diese Variablen können durch Angeben von Werten für Umgebungsvariablen oder durch Angeben von Werten für Befehlszeilenparameter aufgefüllt werden.

Die folgenden Regeln gelten für benutzerdefinierte Skriptvariablen und Umgebungsvariablen:

  • Eine Variable kann eine beliebige Anzahl von Kleinbuchstaben, Großbuchstaben, Ziffern, Bindestrichen (-) und Unterstrichen (_) enthalten.
  • Eine Variable darf keine eingebetteten Zeichen oder Steuerzeichen, wie z. B. CR, LF oder TAB enthalten.

Vom System reservierte Skriptvariablen

Vom System reservierte Skriptvariablen sind Skriptvariablen, die vom Befehlszeilendienstprogramm ascmd definiert sind, um die mit jedem Befehlszeilenparameter verbundenen Werte zu speichern. In einigen Fällen können die Werte für diese systemreservierten Skriptvariablen auch in Umgebungsvariablen gespeichert werden. Bei systemreservierten Skriptvariablen, die sowohl von Umgebungsvariablen als auch von Befehlszeilenparametern aufgefüllt oder davon abgeleitet werden können, wird mit dem ggf. für den Befehlszeilenparameter angegebenen Wert jeder in einer Umgebungsvariablen angegebene Wert überschrieben.

In der folgenden Tabelle werden die vom System reservierten Skriptvariablen, die jeweils zugehörigen Befehlszeilenparameter und, sofern zutreffend, die zugehörigen Umgebungsvariablen beschrieben.

ms365187.note(de-de,SQL.90).gifHinweis:
Drei vom System reservierte Skriptvariablen können nur mithilfe eines Befehlszeilenparameters (dem Parameter –i, –o und –T) festgelegt werden. Eine diesen drei Befehlszeilenparametern entsprechende ASCMD-Umgebungsvariable, die Sie zum Auffüllen der vom System reservierten Skriptvariablen verwenden können, steht nicht zur Verfügung.
Vom System reservierte Skriptvariable Parameter Umgebungsvariable (sofern vorhanden)

ASCMDUSER

–U

ASCMDUSER

ASCMDDOMAIN

–U

ASCMDUSER

ASCMDPASSWORD

–P

ASCMDPASSWORD

ASCMDSERVER

–S

ASCMDSERVER

ASCMDINSTANCE

–S

ASCMDSERVER

ASCMDHTTPCONNECTION

–S

ASCMDSERVER

ASCMDDBNAME

d

ASCMDDBNAME

ASCMDINPUTFILE

–i

ASCMDOUTPUTFILE

–o

ASCMDQUERYTIMEOUT

–t

ASCMDQUERYTIMEOUT

ASCMDCONNECTTIMEOUT

–tc

ASCMDCONNECTTIMEOUT

ASCMDTRACEFILE

–T

ASCMDTRACEFORMAT

–Tf

ASCMDTRACEFORMAT

ASCMETRACEDELIM

–Td

ASCMDTRACEDELIM

ASCMDTRACELEVEL

–Tl

ASCMDTRACELEVEL

ASCMDTRACETIMEOUT

–Tt

ASCMDTRACETIMEOUT

ASCMDEXTENDEDCONNECTION

–xc

ASCMDEXTENDEDCONNECTSTRING

Beachten Sie, dass in einigen Fällen in der obigen Tabelle mehrere vom System reservierte Skriptvariablen von einem einzigen Parameter oder einer einzigen Umgebungsvariablen abgeleitet werden. Im folgenden Beispiel werden drei Skriptvariablen von der Einstellung der ASCMDSERVER-Umgebungsvariablen abgeleitet.

  • C:\>SET ASCMDSERVER=http://myserver/my_virtual_dir/msmdpump.dll

Mit der obigen SET-Anweisung, die einen Wert für die ASCMDSERVER-Umgebungsvariable angibt, werden für die drei vom System reservierten Skriptvariablen die folgenden Werte festgelegt:

  • ASCMDSERVER="http://myserver/my_virtual_dir/msmdpump.dll"
  • ASCMDINSTANCE=""
  • ASCMDHTTPCONNECTION="true"

Im folgenden Beispiel werden dieselben drei vom System reservierten Skriptvariablen mithilfe einer anderen SET-Anweisung mit anderen Werten aufgefüllt:

  • C:\>SET ASCMDSERVER=myserver\myinstance

Mit der obigen SET-Anweisung, die einen Wert für die ASCMDSERVER-Umgebungsvariable angibt, werden für die drei vom System reservierten Skriptvariablen die folgenden Werte festgelegt:

  • ASCMDSERVER="myserver"
  • ASCMDINSTANCE="myinstance"
  • ASCMDHTTPCONNECTION="false"

Verwenden von systemreservierten Skriptvariablen an der Eingabeaufforderung

Falls eine Umgebungsvariable vorhanden ist, die mit einer vom System reservierten Skriptvariablen übereinstimmt (für eine Übereinstimmung ist dieselbe Groß-/Kleinschreibung erforderlich), wird der Wert der Umgebungsvariablen als Standardwert für die vom System reservierte Skriptvariable und für den zugehörigen Befehlszeilenparameter verwendet. Sie können z. B. die folgende SET-Anweisung verwenden, mit der die ASCMDDBNAME-Umgebungsvariable festgelegt wurde:

  • C:\>SET ASCMDDBNAME="Adventure Works DW"

In diesem Fall wird "Adventure Works DW” als Standarddatenbank verwendet (–d-Parameter), wenn Sie das Befehlszeilendienstprogramm ascmd ausführen (sofern Sie an der Befehlszeile keinen anderen Wert angeben).

Verwenden von systemreservierten Skripvariablen in Skripts, Abfragen oder Anweisungen

Vom System definierte Skriptvariablen können auch in einem XMLA-Skript, einer MDX-Abfrage oder einer DMX-Anweisung verwendet werden. In den folgenden Beispielen wird gezeigt, wie Sie das Befehlszeilendienstprogramm ascmd mithilfe von Skriptvariablen von der Befehlszeile aus aufrufen. Weitere Beispiele zur Veranschaulichung von Verwendungsszenarien finden Sie weiter unten in diesem Dokument.

  • C:\>ascmd -S <server name> -i process.xmla -v cube=<CubeID>
process.xmla (vereinfacht)
<Batch>
    <Parallel>
         <Process>
             <Object>
                  <DatabaseID>$(ASCMDDBNAME)</DatabaseID>
                  <CubeID>($CUBE)</CubeID>
            . . .
         </Process>
    </Parallel>
</Batch>

Benutzerdefinierte Skriptvariablen

Eine benutzerdefinierte Skriptvariable ist eine Skriptvariable, die mit dem –v-Parameter an der Befehlszeile definiert wird bzw. als Umgebungsvariable definiert wird. Wenn das Befehlszeilendienstprogramm ascmd in einem XMLA-Skript, einer MDX-Abfrage oder einer DMX-Anweisung auf eine Variable trifft und die Variable nicht mit dem –v-Parameter aufgefüllt wurde, überprüft das Dienstprogramm, ob eine Umgebungsvariable mit demselben Namen vorhanden ist und verwendet dann den Wert dieser Variablen. Wenn das Befehlszeilendienstprogramm ascmd keine passende Umgebungsvariable findet, wird die Skriptvariable entfernt und durch eine leere Zeichenfolge ("") ersetzt.

Die folgenden Regeln gelten für benutzerdefinierte Skriptvariablen, die mit dem –v-Parameter an der Befehlszeile definiert werden:

  • Führende und nachfolgende Leerzeichen aus dem "Wert"-Teil einer Variablen werden entfernt.
  • Die Variable darf nicht mit der Zeichenfolge “ascmd” beginnen.

Verwenden von MDX, XMLA und DMX in Eingabedateien

Das Befehlszeilendienstprogramm ascmd unterstützt die Ausführung von MDX-Abfragen, XMLA-Skripts und DMX-Anweisungen in Eingabedateien. Bei dem Eingabeskript, das Sie an das Befehlszeilendienstprogramm ascmd übergeben, handelt es sich eigentlich um ein XMLA-Befehlselement.

Die Befehlselemente lauten wie folgt:

  • Alter
  • Backup
  • Batch
  • BeginTransaction
  • Cancel
  • ClearCache
  • CommitTransaction
  • Create
  • Delete
  • DesignAggregations
  • Drop
  • Insert
  • Lock
  • MergePartitions
  • NotifyTableChange
  • Process
  • Restore
  • RollbackTransaction
  • Statement (zum Ausführen von MDX-Abfragen und DMX-Anweisungen)
  • Subscribe
  • Synchronize
  • Unlock
  • Update
  • UpdateCells

Sollen Befehle für mehrere Objekte gleichzeitig ausgeführt werden, verwenden Sie den <Batch>-Befehl. Sollen Befehle für MDX-Abfragen und DMX-Anweisungen ausgeführt werden, verwenden Sie den <Statement>-Befehl. Weitere Informationen finden Sie in der SQL Server 2005-Onlinedokumentation unter Command Element (XMLA). Die folgenden Beispiele zeigen, wie MDX-Abfragen, DMX-Anweisungen und XMLA-Skripts strukturiert werden.

ms365187.note(de-de,SQL.90).gifWichtig:
Bei Befehlen wird wie bei allen XML-Strukturen die Groß-/Kleinschreibung berücksichtigt. Sie müssen daher beispielsweise alle MDX-Abfragen in <Statement> …. </Statement>-Tags einschließen, und der Befehl muss "Statement" lauten, nicht "statement" oder "STATEMENT".

Zusätzlich zu XMLA-Befehlen können mit dem Befehlszeilendienstprogramm ascmd auch benutzerdefinierte XMLA-Anforderungen ausgeführt werden, sodass buchstäblich jede Anforderung ausgeführt werden kann, deren Ausdruck in XMLA möglich ist. Mit dem Befehlszeilendienstprogramm ascmd können Sie beispielsweise eine der folgenden XMLA-Anforderungen ausgeben:

  • XMLA-Ermittlungsabfragen zum Abfragen von Analysis Services-Metadaten. Diese Metadaten enthalten Informationen zu folgenden Elementen:
    • In einer Analysis Services-Datenbank gespeicherte Objekte, z. B. die auf dem Server definierten Cubes, und
    • verwendete Ressourcen, z. B. die auf dem Server geöffneten Verbindungen.
  • Ausführungsanforderungen, mit denen Befehle ausgeführt werden und mit denen diese Befehle jedoch durch Angeben einer Eigenschaftenliste und einer Parameterliste geändert werden können. Ein Beispiel für diese Art von Anforderung wird in diesem Dokument weiter unten bereitgestellt weitere Informationen finden Sie im Ausführungsbeispiel.

Wenn der Eingabetext nicht als XMLA-Befehl, eine Ermittlungsanforderung oder eine Ausführungsanforderung formatiert ist, nimmt das Befehlszeilendienstprogramm ascmd an, dass es sich beim Eingabetext um eine MDX-Abfrage oder eine DMX-Anweisung handelt. In diesem Fall codiert das Befehlszeilendienstprogramm ascmd den Text als HTML, schließt ihn in ein <Statement> … </Statement>-Element ein und verarbeitet ihn als XMLA-Befehl. Dies erleichtert die Eingabe einer MDX-Abfrage oder DMX-Anweisung. Ein Beispiel hierzu finden Sie in Szenario 1 "Abfragen eines Analysis Services-Cube" weiter unten in diesem Dokument.

MDX-Beispiel:

<Statement>
SELECT NON EMPTY
         [Employees].Members ON ROWS,
         [Measures].[Internet Gross Profit] ON COLUMNS 
FROM [Adventure Works]
</Statement>

In diesem Beispiel wird mit einer MDX-Abfrage in einer XMLA-Anweisung aus dem Adventure Works-Cube das Internet Gross Profit-Measure für jedes Mitglied der Employees-Attributhierarchie zurückgegeben, das nicht leer ist.

DMX-Beispiel:

<Statement>
ALTER MINING STRUCTURE [Bike Buyer]
ADD MINING MODEL [Decision Tree]
(
    [Customer Key],
    [Age],
    [Bike Buyer] PREDICT,
    [Commute Distance],
    [Education],
    [Gender],
    [House Owner Flag],
    [Marital Status],
    [Number Cars Owned],
    [Number Children At Home],
    [Occupation],
    [Region],
    [Total Children],
    [Yearly Income]
) USING Microsoft_Decision_Trees
WITH DRILLTHROUGH
</Statement>

In diesem Beispiel wird mit einer DMX-Abfrage in einer XMLA-Anweisung die [Bike Buyer]-Miningstruktur geändert, indem ein neues Miningmodell hinzugefügt wird.

XMLA-Beispiel:

<Batch xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
   <Parallel>
      <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <Object>
            <DatabaseID>Adventure Works DW</DatabaseID>
            <CubeID>Adventure Works DW</CubeID>
            <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
            <PartitionID>Internet_Sales_2001</PartitionID>
         </Object>
         <Type>ProcessFull</Type>
         <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
      </Process>
   </Parallel>
</Batch>

In diesem Beispiel wird mit einer XMLA-Anweisung die Internet_Sales_2001-Partition vollständig verarbeitet.

Ermittlungsbeispiel:

<Discover xmlns="urn:schemas-microsoft-com:xml-analysis">
   <RequestType>MDSCHEMA_CUBES</RequestType>
   <Restrictions>
      <RestrictionList>
         <CATALOG_NAME>Adventure Works DW</CATALOG_NAME>
      </RestrictionList>
   </Restrictions>
   <Properties>
      <PropertyList>
         <Catalog>Adventure Works DW</Catalog>
         <Format>Tabular</Format>
      </PropertyList>
   </Properties>
</Discover>

In diesem Beispiel wird mit einer XMLA-Ermittlungsanforderung zurückgegeben, welche Cubes in der Adventure Works DW-Datenbank verfügbar sind. Da Perspektiven an Anwendungen zurückgegeben werden, als wenn es sich um Cubes handeln würde, enthalten die zurückgegebenen Daten tatsächlich sowohl Cubes als auch Perspektiven.

Ausführungsbeispiel:

<Execute xmlns="urn:schemas-microsoft-com:xml-analysis">
   <Command>
      <Statement>
         SELECT [Measures].MEMBERS ON COLUMNS FROM [Adventure Works]
      </Statement>
   </Command>
   <Properties>
      <PropertyList>
         <Catalog>Adventure Works DW</Catalog>
         <Format>Tabular</Format>
         <AxisFormat>ClusterFormat</AxisFormat>
      </PropertyList>
   </Properties>
</Execute>

In diesem Beispiel wird eine MDX-Abfrage in einer XMLA-Anweisung verwendet. Beachten Sie jedoch, dass im Eigenschaftenlistenbereich der XMLA-Anforderung angegeben wird, dass das Rückgabeformat tabellarisch und nicht multidimensional ist. Das multidimensionale Format ist das Standardformat für Befehle einer XMLA-Anweisung. Da das Rückgabeformat tabellarisch (Rowset-Format) ist, kann die Ausgabedatei von einer Anwendung verwendet werden, in der vereinfachte XSD-Rowsets anstelle von Zellenmengen erkannt werden, und ein vereinfachtes Rowset kann einfacher in eine relationale SQL-Datenbank geladen werden, da es nun als Tabelle formatiert ist.

Beispiele für ASCMD-Szenarien

Anhand der folgenden Szenarien wird die Verwendung des Befehlszeilendienstprogramms ascmd demonstriert.

Szenario 1: Abfragen eines Analysis Services-Cube

In diesem Szenario erstellen Sie eine Eingabedatei, die eine MDX-Abfrage (die Datei query.mdx) mit einer benutzerdefinierten Skriptvariablen (Cube) enthält. Anschließend rufen Sie diese Eingabedatei vom Befehlszeilendienstprogramm ascmd aus auf und geben an der Befehlszeile mithilfe des –v-Parameters einen Wert für diese Variable an.

Datei query.mdx:

Format 1:

<Statement>
/* THIS IS AN MDX COMMENT */
SELECT [Measures].[Internet Sales Amount] ON COLUMNS
FROM $(cube)
WHERE [Customer].[Country].&amp;[United States]
</Statement>

Format 2:

/* THIS IS AN MDX COMMENT */
SELECT [Measures].[Internet Sales Amount] ON COLUMNS
FROM $(cube)
WHERE [Customer].[Country].&[United States]
Befehlszeilenbeispiel:

C:\>ascmd -S myserver -d "Adventure Works DW" -i query.mdx -o result.xml -v cube="[Adventure Works]"

Beachten Sie, dass bei Verwendung von Format 1 der Schlüssel für United States durch Ersetzen von MDX "&" (gibt an, dass es sich um den Elementschlüssel und nicht den Namen handelt) durch &amp; (erforderlich für die HTML-Codierung) behandelt wird und dass das <Statement>-Element angegeben ist. Beachten Sie, dass beim Verwenden von Format 2 weder die HTML-Codierung noch das <Statement>-Element erforderlich ist. Dies liegt daran, dass der Eingabetext nicht mit einem gültigen XMLA-Befehl beginnt und das Befehlszeilendienstprogramm ascmd daher annimmt, dass der Eingabetext eine Anweisung ist und diesen automatisch als HTML codiert und vor der Ausführung mit einem <Statement>-Element umschließt.

Szenario 2: Sichern einer Datenbank in einer nicht vertrauenswürdigen Domäne

In diesem Szenario sichern Sie mithilfe des Befehlszeilendienstprogramms ascmd eine Datenbank auf einem Server in einer nicht vertrauenswürdigen Domäne. Da sich die Datenbank in einer nicht vertrauenswürdigen Domäne befindet, ist für dieses Szenario der http-Zugriff erforderlich. In diesem Szenario wird auf dem Remoteserver ("myserver" genannt) sowohl IIS (Internet Information Services) als auch Analysis Services ausgeführt. Der Remoteserver verfügt über ein virtuelles IIS-Verzeichnis mit dem Namen "olapadmin", das für die Verwendung der Standardauthentifizierung konfiguriert ist. Der Remoteserver verfügt darüber hinaus über ein lokales Konto mit dem Namen "olapadmin" mit entsprechenden Berechtigungen zum Ausführen von Sicherungen. Sie geben den Datenbanknamen, die Zugriffsmethode, den Benutzernamen, das Kennwort und die Sicherungsdatei mithilfe von ascmd-Befehlszeilenparametern an der Befehlszeile an. Sie geben außerdem eine XMLA-Eingabedatei (backup.xmla) an, die die Skriptvariablen für die Datenbank und die Sicherungsdatei enthält.

Datei backup.xmla:
<Backup xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
   <Object>
      <DatabaseID>$(ascmddbname)</DatabaseID>
   </Object>
   <File>$(backupfile).abf</File>
</Backup>
Befehlszeilenbeispiel:

C:\>ascmd -S https://myserver/msolap90/msmdpump.dll -U myserver\olapadmin -P #1PWD -d "Adventure Works DW" -i backup.xmla -v backupfile="AdvWorks"

Beachten Sie, dass im Befehlszeilenbeispiel https verwendet wird, damit das Kennwort verschlüsselt wird, wenn es über das Netzwerk an den Remoteserver gesendet wird.

Szenario 3: Verarbeiten von mehreren Partitionen

In diesem Szenario verarbeiten Sie mit dem Befehlszeilendienstprogramm ascmd mehrere Partitionen. Mithilfe von Skriptvariablen geben Sie im XMLA-Verarbeitungsskript (process.xmla) den Grad an Parallelität, den Datenbank- und Cubenamen sowie den Prozesstyp an. Anhand dieses XMLA-Skripts wird auch die Verwendung von Kommentaren in einem XMLA-Skript demonstriert. Beim Aufrufen des process.xmla-Verarbeitungsskripts aus dem Befehlszeilendienstprogramm ascmd geben Sie in einer BAT-Batchdatei (process.bat) den Namen des Servers und der Datenbank, eine Ausgabedatei für XMLA-Ergebnisse, eine Ablaufverfolgungsdatei für Ablaufverfolgungsereignisse, die Ablaufverfolgungsebene sowie den Grad an Parallelität an. Die Ablaufverfolgungsdatei enthält dieselben Ereignisse und Informationen, die von SQL Server Profiler zurückgegeben werden würden, wenn das System während der Verarbeitung von einem Administrator überwacht werden würde.

Datei process.xmla:
<Batch xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
   <Parallel maxparallel="$(MAXPARALLEL)">
   <!-- SEE ABOVE FOR HOW MANY PARITIONS PROCESSED IN PARALLEL -->
      <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <Object>
            <DatabaseID>$(ASCMDDBNAME)</DatabaseID>
            <CubeID>$(ASCMDDBNAME)</CubeID>
            <!-- Just so happens CubeID=DatabaseID=Database name :-) -->
            <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
            <PartitionID>Internet_Sales_2001</PartitionID>
         </Object>
         <Type>$(PROCESSTYPE)</Type>
         <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
      </Process>
      <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <Object>
            <DatabaseID>$(ASCMDDBNAME)</DatabaseID>
            <CubeID>$(ASCMDDBNAME)</CubeID>
            <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
            <PartitionID>Internet_Sales_2002</PartitionID>
         </Object>
         <Type>$(PROCESSTYPE)</Type>
         <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
      </Process>
      <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <Object>
            <DatabaseID>$(ASCMDDBNAME)</DatabaseID>
            <CubeID>$(ASCMDDBNAME)</CubeID>
            <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
            <PartitionID>Internet_Sales_2004</PartitionID>
         </Object>
         <Type>$(PROCESSTYPE)</Type>
         <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
      </Process>
      <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <Object>
            <DatabaseID>$(ASCMDDBNAME)</DatabaseID>
            <CubeID>$(ASCMDDBNAME)</CubeID>
            <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
            <PartitionID>Internet_Sales_2003</PartitionID>
         </Object>
         <Type>$(PROCESSTYPE)</Type>
         <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
      </Process>
   </Parallel>
</Batch>
Datei process.bat:
@echo off
call :generate-timestamp
ascmd -S myserver -d "Adventure Works DW" -i process.xmla
         -o process.xml -T process-%timestamp%.csv -Tl medium 
         -v maxparallel=4 processtype=ProcessFull
if ERRORLEVEL 1 goto errseen
goto :EOF
:errseen
echo ** Error seen in processing
goto :EOF

:generate-timestamp
set now_date=%date%
set now_time=%time%
set now_Year=%now_date:~10,4%
set now_Month=%now_date:~4,2%
set now_Day=%now_date:~7,2%
set now_Hour=%now_time:~0,2%
set now_Min=%now_time:~3,2%
if "%now_Hour:~0,1%"==" " set now_Hour=0%now_Hour:~1,1%
set timestamp=%now_year%%now_month%%now_day%_%now_hour%%now_min%
goto :EOF

Beachten Sie, dass die Batchdatei in der Ausgabedatei einen Timestamp verwendet, sodass mehrere Ausführungen gleichzeitig aufgezeichnet werden können.

Szenario 4: Erstellen einer neuen Datenbank auf einem Server

In diesem Szenario rufen Sie mit dem Befehlszeilendienstprogramm ascmd eine XMLA-Skriptdatei (create.xmla) auf, um auf einem Server eine neue Datenbank zu erstellen. Der Datenbankname wird im XMLA-Skript mithilfe einer benutzerdefinierten Skriptvariablen definiert, und der Wert für diese Variable wird an der Befehlszeile mithilfe des –v-Parameters definiert.

Datei create.xmla:

Die Datei wurde in SQL Server Management Studio erstellt. Wenn Sie eine eigene Datei erstellten möchten, klicken Sie mit der rechten Maustaste auf die Datenbank, und klicken Sie im Menü Skript auf Erstellen.

<Create xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
      <ObjectDefinition>
            <Database xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                  <ID>$(dbname)</ID>
                  <Name>$(dbname)</Name>
                  <Description>A Unified Dimensional Model that encompasses the Adventure Works data warehouse.</Description>
                  <Language>1033</Language>
                  <Collation>Latin1_General_CI_AS</Collation>
                  <DataSourceImpersonationInfo>
                     <ImpersonationMode>Default</ImpersonationMode>
                  </DataSourceImpersonationInfo>
                  <Dimensions>
                        <Dimension>
                              <ID>Dim Promotion</ID>
                              <Name>Promotion</Name>
                              <Annotations>
 . . .
Befehlszeilenbeispiel:

C:\>ascmd -S myserver -i create.xmla -v dbname="My Adventure Works DW"

Im obigen XMLA-Skript können Sie mithilfe von Skriptvariablen auch Objekte konfigurieren, z. B. die Verbindungszeichenfolge für eine Datenquelle, den in der Datenquelle verwendeten Server- und Datenbanknamen oder die in der Datenquellensicht verwendeten Feldnamen.

Szenario 5: Erstellen einer Anwendung für die Cachevorbereitung

In diesem Szenario rufen Sie mithilfe einer Batchdatei (cache_warmer.bat) das Befehlszeilendienstprogramm ascmd auf, um verschiedene MDX-Abfragen zum Vorbereiten des Analysis Services-Datencaches aufzurufen. Sie können diese Batchdatei beispielsweise mit dem SQL Server-Agent täglich um 2:00 Uhr früh oder im Anschluss an den nachts ausgeführten Batchladevorgang aufrufen. In der Batchdatei legen Sie Umgebungsvariablen für den Server-, Datenbank- und Cubenamen fest. Da die als Umgebungsvariablen angegebenen Server- und Datenbanknamen den Namen der vom System reservierten Skriptvariablen genau entsprechen, werden sie als Standardwerte für die Befehlszeilenparameter –S und –d verwendet. Die benutzerdefinierte Skriptvariable für den Cubenamen wird in allen MDX-Abfragen verwendet.

Datei query1.mdx:

Dateien: query1.mdx bis query6.mdx im Format von query1.txt

<Statement>
SELECT [Measures].[Internet Sales Amount] ON COLUMNS
FROM $(cube)
WHERE [Customer].[Country].&amp;[United States]
</Statement>

Erstellen Sie zusätzliche Abfragedateien, indem Sie [United States] durch die anderen Länder/Regionen in Adventure Works ersetzen: [Australia], [Canada], [France], [Germany] oder [United Kingdom].

Datei cache_warmer.bat:
set ascmdserver=myserver
set ascmddbname=Adventure Works DW
set cube=[Adventure Works]

set QUERYDIR=..\queries
set OUTPUTDIR=..\queries
echo -------------------------
set f=
for %%f in (%QUERYDIR%\*.mdx) do (
    call :query %%f
            if ERRORLEVEL 1 goto :EOF
)
echo -------------------------
echo Done.
goto :EOF

:query
echo Query: %1
echo ---------
ascmd -T %OUTPUTDIR%\querylog.txt -Tl duration 
         -Tf text -o %OUTPUTDIR%\%~n1.xml -i %1
echo Errorlevel: %ERRORLEVEL%
echo -------------------------
if ERRORLEVEL 1 goto :errseen
goto :EOF

:errseen
echo -------------------------
echo   ******
echo   ****** ERROR SEEN ******
echo   ******   Exiting    ******
goto :EOF

Szenario 6: Erstellen einer Überprüfungsprozedur

In diesem Szenario rufen Sie mithilfe des Befehlszeilendienstprogramms ascmd am Ende eines nachts ausgeführten ETL-Laufs mehrere MDX-Abfragedateien auf (ähnlich wie beim vorherigen Szenario). Sie verwenden den –Tl-Parameter für die Dauer, um die Dauer jeder MDX-Abfrage in einer Ablaufverfolgungsdatei aufzuzeichnen, und leiten die Ausgabe des MDX-Skripts an eine NUL-Datei weiter (–oNUL). Sie können den –Tl-Parameter für die Dauer auch in Verbindung mit dem Aufzeichnen der Ausführungsergebnisse in einem Ablaufverfolgungsprotokoll verwenden. Wenn Sie das Befehlszeilendienstprogramm ascmd auf diese Weise verwenden, können Sie die für jede MDX-Abfrage benötigte Zeit nachverfolgen und diese Ergebnisse täglich miteinander vergleichen, um sicherzustellen, dass Werte im gleichen Bereich zurückgegeben werden. Wenn die Zeitdauerergebnisse für einen Tag erheblich außerhalb des gültigen Bereichs liegen, kann dies darauf hinweisen, dass die Ergebnisse des ETL-Laufs möglicherweise vor Abschluss unterbrochen werden müssen.

Befehlszeilenbeispiel:

C:\>ascmd -i %queryfile% -o NUL -T querylog.csv -Tl duration

Szenario 7: Automatisieren der Erstellung und des Trainings eines Data Mining-Modells

In diesem Szenario rufen Sie mit dem Befehlszeilendienstprogramm ascmd wie folgt eine Reihe von DMX-Anweisungen auf:

  • Eine DMX-Anweisung, mit der eine Miningstruktur (Bike Buyer Structure.DMX) erstellt wird und für die Umgebungsvariablen zum Festlegen des Server- und des Datenbanknamens verwendet werden.
  • Eine DMX-Anweisung (Clustering_Model.dmx), mit der der Strukur ein Clustering-Miningmodell hinzugefügt wird.
  • Eine DMX-Anweisung (DT_Model.dmx), mit der der Struktur ein Entscheidungsstruktur-Miningmodell hinzugefügt wird.
  • Eine DMX-Anweisung (Process Bike Buyer Structure.dmx), mit der die Miningstruktur und die Miningmodelle verarbeitet werden.

Wenn die Miningstruktur eingerichtet wurde, können Sie mit dem Befehlszeilendienstprogramm ascmd mehrere DMX-Anweisungen aufrufen, die die Mininstruktur mit verschiedenen Miningmodellen abfragen.

Erstellen der Miningstruktur

Datei Bike Buyer Structure.dmx:
<Statement>
CREATE MINING STRUCTURE [Bike Buyer]
(
    [Customer Key] LONG KEY,
    [Age]LONG DISCRETIZED(Automatic,10),
    [Bike Buyer] LONG DISCRETE,
    [Commute Distance] TEXT DISCRETE,
    [Education] TEXT DISCRETE,
    [Gender] TEXT DISCRETE,
    [House Owner Flag] TEXT DISCRETE,
    [Marital Status] TEXT DISCRETE,
    [Number Cars Owned]LONG DISCRETE,
    [Number Children At Home]LONG DISCRETE,
    [Occupation] TEXT DISCRETE,
    [Region] TEXT DISCRETE,
    [Total Children]LONG DISCRETE,
    [Yearly Income] DOUBLE CONTINUOUS
)
</Statement>

Befehlszeilenbeispiel:

C:\>set ascmdserver=myserver

C:\>set ascmddbname=Adventure Works DW

C:\>ascmd -i "Bike Buyer Structure.dmx"

Hinzufügen eines Clustering-Miningmodells zur Struktur

Datei Clustering_Model.dmx:
<Statement>
ALTER MINING STRUCTURE [Bike Buyer]
ADD MINING MODEL [Clustering]
USING Microsoft_Clustering 
</Statement>

Befehlszeilenbeispiel:

C:\>ascmd -i "Clustering_Model.dmx"

Hinzufügen eines Entscheidungsstruktur-Miningmodells zur Struktur

Datei DT_Model.dmx
<Statement>
ALTER MINING STRUCTURE [Bike Buyer]
ADD MINING MODEL [Decision Tree]
(
    [Customer Key],
    [Age],
    [Bike Buyer] PREDICT,
    [Commute Distance],
    [Education],
    [Gender],
    [House Owner Flag],
    [Marital Status],
    [Number Cars Owned],
    [Number Children At Home],
    [Occupation],
    [Region],
    [Total Children],
    [Yearly Income]
) USING Microsoft_Decision_Trees
WITH DRILLTHROUGH
</Statement>
Befehlszeilenbeispiel:

C:\>ascmd -i "DT_Model.dmx"

Verarbeiten der Miningstruktur und Miningmodelle

Verarbeiten der Datei Bike Buyer Structure.dmx:
<Statement>
INSERT INTO MINING STRUCTURE [Bike Buyer]
(
    [Customer Key],
    [Age],
    [Bike Buyer],
    [Commute Distance],
    [Education],
    [Gender],
    [House Owner Flag],
    [Marital Status],
    [Number Cars Owned],
    [Number Children At Home],
    [Occupation],
    [Region],
    [Total Children],
    [Yearly Income]
)
OPENQUERY([$(ASCMDDBNAME)],
    'SELECT CustomerKey, Age, BikeBuyer,
             CommuteDistance,EnglishEducation,
             Gender,HouseOwnerFlag,MaritalStatus,
             NumberCarsOwned,NumberChildrenAtHome, 
             EnglishOccupation,Region,TotalChildren,
             YearlyIncome 
      FROM dbo.vTargetMail')
</Statement>
Befehlszeilenbeispiel:

C:\>ascmd -i "DT_Model.dmx"

Abfragen der Struktur mithilfe des Entscheidungsstruktur-Miningmodells

Datei SELECT_DRILLTHROUGH.dmx:
<Statement>
SELECT * 
FROM [Decision Tree].CASES
</Statement>
Datei BATCH_PREDICTION.dmx:
<Statement>
SELECT
   TOP 10
   t.[LastName],
   t.[FirstName],
   [Decision Tree].[Bike Buyer],
   PredictProbability([Bike Buyer])
From
   [Decision Tree]
PREDICTION JOIN
 OPENQUERY([$(ASCMDDBNAME)],
      'SELECT
         [LastName],
         [FirstName],
         [MaritalStatus],
         [Gender],
         [YearlyIncome],
         [TotalChildren],
         [NumberChildrenAtHome],
         [Education],
         [Occupation],
         [HouseOwnerFlag],
         [NumberCarsOwned]
      FROM
         [dbo].[ProspectiveBuyer]
      ') AS t
ON
   [Decision Tree].[Marital Status] = t.[MaritalStatus] AND
   [Decision Tree].[Gender] = t.[Gender] AND
   [Decision Tree].[Yearly Income] = t.[YearlyIncome] AND
   [Decision Tree].[Total Children] = t.[TotalChildren] AND
   [Decision Tree].[Number Children At Home] = t.[NumberChildrenAtHome] AND
   [Decision Tree].[Education] = t.[Education] AND
   [Decision Tree].[Occupation] = t.[Occupation] AND
   [Decision Tree].[House Owner Flag] = t.[HouseOwnerFlag] AND
   [Decision Tree].[Number Cars Owned] = t.[NumberCarsOwned]
WHERE [Decision Tree].[Bike Buyer] =1
ORDER BY PredictProbability([Bike Buyer]) DESC
</Statement>
Datei SELECT_DISCRETE.dmx:
<Statement>
SELECT DISTINCT [Bike Buyer] 
FROM [Decision Tree]
</Statement>
Befehlszeilenbeispiel:

C:\>ascmd -i SELECT_DRILLTHROUGH.dmx

C:\>ascmd -i BATCH_PERDICTION.dmx

C:\>ascmd -i SELECT_DISCRETE.dmx

Szenario 8: Leeren des Analysis Services-Datencache

In diesem Szenario rufen Sie mithilfe des Befehlszeilendienstprogramms ascmd ein XMLA-Skript (ClearCache.xmla) auf, das beim Ausführen von Leistungsstudien zwischen den einzelnen Durchläufen den Analysis Services-Datencache löscht. Die Datei ClearCache.xmla enthält Skriptvariablen für den Datenbank- und den Cubenamen. Dieses XMLA-Skript wird durch eine Batchdatei (ClearCache.bat) aufgerufen, die den Server- und Instanznamen, den Datenbanknamen, den Namen der Eingabedatei, den Namen der Ausgabedatei und den Cubenamen angibt.

Datei ClearCache.xmla:
<Batch xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
   <ClearCache>
               <Object>
                      <DatabaseID>$(ASCMDDBNAME)</DatabaseID>
                      <CubeID>$(CUBE)</CubeID>
               </Object>
       </ClearCache>
</Batch> 
Datei ClearCache.bat:
@echo off
ascmd -S myserver\myinstance -d "Adventure Works DW" -i ClearCache.xmla
         -o ClearCache.xml -v cube="Adventure Works DW"

if ERRORLEVEL 1 goto :errseen
goto :EOF

:errseen
echo **** Error seen ****
echo ********************
goto :EOF

Szenario 9: Bestimmen der derzeitigen Verbindungen mit dem Server

In diesem Szenario rufen Sie mithilfe des Befehlszeilendienstprogramms ascmd die Liste der aktiven Verbindungen für den Server ab. Eine Anwendung kann anhand dieser Informationen die Verarbeitung verzögern, bis die Verbindung mit bestimmten Benutzern getrennt ist, oder eine E-Mail an die Betreiber senden, ob aktuelle Verbindungen vorhanden sind (außer den Verbindungen für den nächtlichen Batchvorgang).

Datei connections.xmla:
<Discover xmlns="urn:schemas-microsoft-com:xml-analysis">
   <RequestType>DISCOVER_CONNECTIONS</RequestType>
   <Restrictions />
   <Properties>
      <PropertyList>
         <Content>Data</Content>     <!-- Only the data; no schema -->
      </PropertyList>
   </Properties>
</Discover>
Befehlszeilenbeispiel:

C:\>ascmd -S myserver -i connections.xmla -o current_connections.xml

Szenario 10: Bestimmen der Verarbeitung einer Partition und des Zeitpunkts der letzten Verarbeitung

In diesem Szenario bestimmen Sie mit dem Befehlszeilendienstprogramm ascmd, ob eine Partition verarbeitet wurde und ggf. wann die Verarbeitung erfolgt ist. Diese Informationen können auf einfache Weise abgerufen werden,da sie als Eigenschaft des Partitionsobjekts gespeichert sind. Daher können diese Informationen mit einer DISCOVER_XML_METADATA-Anforderung abgerufen werden.

Datei connections.xmla:
<Discover xmlns="urn:schemas-microsoft-com:xml-analysis">
   <RequestType>DISCOVER_XML_METADATA</RequestType>
   <Restrictions>
      <RestrictionList>
        <DatabaseID>$(DatabaseID)</DatabaseID>
        <CubeID>$(CubeID)</CubeID>
        <MeasureGroupID>$(MeasureGroupID)</MeasureGroupID>
        <PartitionID>$(PartitionID)</PartitionID>
      <!-- Ask for just this object referenced -->
      <ObjectExpansion>ReferenceOnly</ObjectExpansion>
      </RestrictionList>
   </Restrictions>
   <Properties>
      <PropertyList>
         <Content>Data</Content>     <!-- Only the data; no schema -->
      </PropertyList>
   </Properties>
</Discover>

Szenario 11: Verwenden des GO-Befehls zum Ausführen eines Rückschreibvorgangs

In diesem Szenario müssen Sie das Befehlszeilenprogramm ascmd verwenden, um den Rückschreibvorgang in zwei Vorgänge aufzuteilen: Ändern Sie die Daten, und führen Sie dann einen Commit aus. Für das Rückschreiben ist die Verwendung des GO-Befehls erforderlich, da die für einen Rückschreibvorgang erforderlichen zwei MDX-Anweisungen (die Anweisungen UPDATE CUBE und COMMIT TRANSACTION) nacheinander in derselben Transaktion ausgegeben werden müssen. MDX unterstützt ihre Ausgabe innerhalb desselben Batches nicht.

Für dieses Szenario müssen Sie die Adventure Works DW-Datenbank ändern, damit das Rückschreiben unterstützt wird. Die vorhandene Datenbank verfügt derzeit nicht über ein Beispiel für einen Cube, von dem das Rückschreiben unterstützt wird. Führen Sie die im Folgenden aufgeführten Schritte aus, um einen Cube zu erstellen und zu überprüfen, von dem das Rückschreiben unterstützt wird:

  1. So definieren Sie einen neuen Cube mit dem Namen "Writeback"

  2. Öffnen Sie Business Intelligence Development Studio.

  3. Zeigen Sie im Menü Datei auf Öffnen, und klicken Sie dann auf Analysis Services-Datenbank.

  4. Geben Sie im Dialogfeld Verbindung mit Datenbank herstellen im Textfeld Server Ihren Servernamen ein, und wählen Sie in der Liste Datenbank die Datenbank Adventure Works DW aus, und klicken Sie dann auf OK.

  5. Klicken Sie im Bereich Projektmappen-Explorer mit der rechten Maustaste auf Cubes, und klicken Sie dann auf Neuer Cube.

  6. Klicken Sie im Cube-Assistenten auf der Seite Willkommen auf Weiter, wählen Sie Cube mithilfe einer Datenquelle erstellen aus, deaktivieren Sie das Kontrollkästchen Automatisch erstellen, und klicken Sie dann auf Weiter.

  7. Wählen Sie auf der Seite Datenquellensicht auswählen in der Liste Verfügbare Datenquellensichten die Option Adventure Works DW aus, und klicken Sie dann auf Weiter.

  8. Aktivieren Sie auf der Seite Fakten- und Dimensionstabellen identifizieren das Kontrollkästchen Fakt für die Tabelle FactSalesQuota und das Kontrollkästchen Dimension für die Tabellen dbo.DimTime und dbo.DimEmployee, und klicken Sie dann auf Weiter.

  9. dbo.DimTime (Dimension lautet Date)dbo.DimEmployeeFactSalesQuota (lediglich mithilfe des "Sales Amount Quota"-Measures)

  10. Wählen Sie auf der Seite Gemeinsame Dimensionen prüfen in der Liste Verfügbare Dimensionen die Optionen Datum und Mitarbeiter aus, klicken Sie auf >, um der Liste Cubedimensionen diese Dimensionen hinzuzufügen, und klicken Sie dann auf Weiter.

  11. Aktivieren Sie auf der Seite Measures auswählen das Kontrollkästchen Fact Sales Quota, aktivieren Sie das Kontrollkästchen Sales Amount Quota, und klicken Sie dann auf Weiter.

  12. Ändern Sie auf der Seite Assistenten abschließen den Cubenamen in Rückschreiben, und klicken Sie dann auf Fertig stellen.

  13. So aktivieren Sie das Rückschreiben für die Fact Sales Quota-Measuregruppe

  14. Wählen Sie im Cube-Designer die Registerkarte Partitionen aus.

  15. Klicken Sie in der Partitionsliste mit der rechten Maustaste auf die Fact Sales Quota-Partition, und klicken Sie dann auf Rückschreibeeinstellungen.

  16. Überprüfen Sie im Dialogfeld Rückschreiben aktivieren – Fact Sales Quota den Namen der Rückschreibetabelle, und klicken Sie dann auf OK, um diese Tabelle zu erstellen und das Rückschreiben für diese Partition zu aktivieren.

  17. Beachten Sie, dass jetzt zwei Partitionen angezeigt werden: eine für die Faktentabelle und eine für die Rückschreibetabelle.

  18. So verarbeiten Sie den Cube Writeback

  19. Klicken Sie im Projektmappen-Explorer im Cubes-Knoten mit der rechten Maustaste auf Writeback, und klicken Sie auf Verarbeiten.

  20. Klicken Sie auf Ja, wenn Sie aufgefordert werden, Änderungen zu speichern.

  21. Klicken Sie im Dialogfeld Cube aufbereiten – Writeback auf Ausführen.

  22. Wenn Sie die Verarbeitungsbefehle erweitern, wird die zum Erstellen der relationalen Rückschreibetabelle verwendete CREATE TABLE SQL-Anweisung angezeigt.

  23. Wenn die Verarbeitung abgeschlossen ist, überprüfen Sie im Feld Status, ob der Vorgang erfolgreich war, und klicken Sie dann auf Schließen.

  24. Klicken Sie erneut auf Schließen, um das Dialogfeld Partition verarbeiten – WriteTable_Fact Sales Quota zu schließen.

  25. Schließen Sie Business Intelligence Development Studio.

  26. So überprüfen Sie die Funktionsfähigkeit des Rückschreibens

  27. Öffnen Sie SQL Server Management Studio.

  28. Stellen Sie eine Verbindung mit Ihrem Server her, und erweitern Sie dann im Objekt-Explorer die Option Datenbanken, klicken Sie mit der rechten Maustaste auf Adventure Works DW, zeigen Sie auf Neue Abfrage, und klicken Sie dann auf MDX.

  29. Führen Sie im MDX-Abfragefenster die folgende MDX-Abfrage aus, um die aktuelle Vertriebsquote für Q1FY2002 und Stephen Y. Jiang zurückzugeben:

    /* Employee 272 is [Stephen Y. Jiang]*/
    SELECT [Measures].[Sales Amount Quota] ON COLUMNS
    FROM [Writeback]
    WHERE ([Employee].[Employee].[Stephen Y. Jiang],[Date].[Calendar].[Calendar Quarter].[Q1 CY 2002])
    
  30. Ändern Sie die Zelle, um $2.200 zurückzugeben, indem Sie folgende MDX-Anweisung ausgeben:

    UPDATE CUBE [Writeback]
    SET ([Employee].[Employee].[Stephen Y. Jiang],
    [Date].[Calendar].[Calendar Quarter].[Q1 CY 2002]) = 2200
    
  31. Führen Sie einen Commit für die Transaktion aus, indem Sie die folgende MDX-Anweisung ausführen:

    COMMIT TRANSACTION
    

    Zu diesem Zeitpunkt können Sie die Tabelle "dbo.WriteTable_Fact Sales Quota" in der relationalen Datenbank Adventure Works DW überprüfen, um anzuzeigen, welche Rückschreibevorgänge bereits für die Zelle ausgeführt wurden. Sie werden dabei feststellen, dass die Differenz (-88800) in diese relationale Tabelle geschrieben wurde. Die ursprüngliche Faktentabelle ist unverändert.

Datei writeback.mdx:
/* What is the existing value? */
SELECT [Measures].[Sales Amount Quota] ON COLUMNS
FROM [Writeback]
WHERE ([Employee].[Employee].&[272],
[Date].[Calendar].[Calendar Quarter].&[2002]&[1])
GO
/* Update the cube with a new value */
UPDATE CUBE [Writeback]
SET ([Employee].[Employee].&[272],
[Date].[Calendar].[Calendar Quarter].&[2002]&[1]) = 33000 /* some different value */
GO
/* Commit it */
Commit Transaction
GO
/* See what the updated value is */
SELECT [Measures].[Sales Amount Quota] ON COLUMNS
FROM [Writeback]
WHERE ([Employee].[Employee].&[272],
[Date].[Calendar].[Calendar Quarter].&[2002]&[1])
GO
Befehlszeilenbeispiel:

C:\>ascmd -S myserver -d "Adventure Works DW" -i writeback.mdx -o writeback_result.xml -v cube="[Writeback]"

Writeback_result.xml:
<multiple-batches>
   <return xmlns="urn:schemas-microsoft-com:xml-analysis">
      <root xmlns= . . .>
         <...metadata about the result set...>
<CellData xmlns="urn:schemas-microsoft-com:xml-analysis:mddataset">
  <Cell CellOrdinal="0">
     <Value xsi:type="xsd:double" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">0</Value> 
     <FmtValue>2200</FmtValue> 
  </Cell>
</CellData>
      </root>
   </return>
   <return xmlns="urn:schemas-microsoft-com:xml-analysis">
      <root xmlns="urn:schemas-microsoft-com:xml-analysis:empty" /> 
   </return>
   <return xmlns="urn:schemas-microsoft-com:xml-analysis">
      <root xmlns="urn:schemas-microsoft-com:xml-analysis:empty" /> 
   </return>
   <return xmlns="urn:schemas-microsoft-com:xml-analysis">
      <root xmlns= . . .>
         <...metadata about the result set...>
<CellData xmlns="urn:schemas-microsoft-com:xml-analysis:mddataset">
  <Cell CellOrdinal="0">
     <Value xsi:type="xsd:double" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">0</Value> 
     <FmtValue>33000</FmtValue> 
  </Cell>
</CellData>
      </root>
   </return>
</multiple-batches>

Beachten Sie, dass in der Mitte zwei leere Resultsets für die Anweisungen UPDATE CUBE und COMMIT TRANSACTION vorhanden sind.

Version Verlauf

12. Dezember 2006

Geänderter Inhalt:
  • Ein neues Feature wurde dokumentiert – Unterstützung mehrerer Batches.
  • Es wurde ein Beispiel hinzugefügt, in dem die Verwendung des neuen Features veranschaulicht wird.

17. Juli 2006

Geänderter Inhalt:
  • Zwei neue Features wurden dokumentiert: benutzerdefinierte XMLA-Anforderungen und die automatische Erkennung des Befehlstyps im Eingabedatenstrom.
  • Beispiele wurden aktualisiert, in denen die Verwendung der neuen Features veranschaulicht wird.

Siehe auch

Andere Ressourcen

XML for Analysis (XMLA)
XML for Analysis Reference (XMLA)
Discover Method (XMLA)
Execute Method (XMLA)

Hilfe und Informationen

Informationsquellen für SQL Server 2005