Condividi tramite


File Leggimi relativo all'esempio di utilità della riga di comando ascmd

Data aggiornamento: 12 dicembre 2006

L'utilità della riga di comando ascmd consente a un amministratore di database di eseguire uno script XMLA, una query MDX o un'istruzione DMX su un'istanza di Microsoft SQL Server 2005 Analysis Services (SSAS). Questa utilità della riga di comando include funzionalità per Analysis Services simili all'utilità sqlcmd inclusa in SQL Server 2005. Per ulteriori informazioni, vedere l'argomento Utilità sqlcmd in SQL Server 2005. I risultati dell'esecuzione dello script, della query o dell'istruzione possono essere archiviati in un file insieme a informazioni di traccia pertinenti di SQL Server Profiler. Il percorso predefinito di installazione dell'utilità della riga di comando ascmd è il seguente:

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

Scenari

Negli scenari seguenti vengono illustrati esempi di utilizzo dell'utilità della riga di comando ascmd.

Elaborazione di una partizione da uno strumento di terze parti

Un amministratore di database deve elaborare partizioni e dimensioni nell'ambito di un processo notturno di estrazione, trasformazione e caricamento (ETL). Lo strumento non appartiene a SQL Server e quindi l'amministratore del database non può utilizzare il supporto integrato di SQL Server Agent per gli script XMLA né eseguire un pacchetto di SQL Server 2005 Integration Services (SSIS). L'amministratore del database desidera avvalersi di una soluzione automatizzata che utilizzi lo strumento di terze parti. La soluzione è un'utilità della riga di comando per eseguire uno script XMLA. L'utilità viene quindi chiamata dallo strumento di terze parti. L'amministratore del database scarica e compila l'esempio di utilità della riga di comando ascmd e, dopo la compilazione, sarà in grado di utilizzare l'utilità della riga di comando ascmd per eseguire script XMLA che elaborano partizioni e dimensioni.

Backup di un database OLAP da uno strumento di terze parti

Un altro amministratore di database della stessa società deve automatizzare il backup di un database di Analysis Services. Poiché il software di pianificazione utilizzato dalla società non è uno strumento di SQL Server, l'attività deve essere eseguita dalla riga di comando. L'amministratore del database genera lo script XMLA appropriato tramite SQL Server Management Studio. A questo punto, il prodotto software di pianificazione di terze parti utilizza l'utilità della riga di comando ascmd per eseguire lo script XMLA per il backup del database OLAP.

Utilizzo di XMLA durante un'installazione

Uno sviluppatore deve integrare l'esecuzione di uno script XMLA direttamente nell'installazione di un prodotto di un fornitore di software indipendente. È necessario eseguire uno script XMLA e recuperare lo stato (e gli eventi di traccia) per verificare che il database di Analysis Services sia stato creato correttamente. A tale scopo, lo sviluppatore può utilizzare l'utilità della riga di comando ascmd.

Linguaggi

  • C#, ovvero il linguaggio in cui è scritta l'utilità ascmd stessa.
  • I comandi dei file batch, che avviano l'utilità della riga di comando ascmd.

Prerequisiti

Per utilizzare in modo efficiente l'utilità della riga di comando ascmd, è consigliabile disporre di alcuni o tutti i componenti software seguenti:

  • Microsoft SQL Server 2005 Analysis Services (SSAS)
    È necessario che sia installata e in esecuzione un'istanza di Analysis Services poiché l'utilità della riga di comando ascmd viene utilizzata per la connessione a un'istanza di Analysis Services e l'esecuzione di query MDX, script XMLA e istruzioni DMX.
  • SQL Server Management Studio e Business Intelligence Development Studio
    Questi due ambienti operativi offrono l'infrastruttura di supporto necessaria per completare qualsiasi attività correlata a Analysis Services. Ogni operazione può infatti essere eseguita tramite l'interfaccia utente o a livello di programmazione.
  • Analysis Management Objects (AMO)
    La libreria AMO è necessaria per eseguire l'utilità della riga di comando ascmd in un computer in cui non è installato Analysis Services. La libreria AMO può essere installata dal Feature Pack per SQL Server 2005, disponibile per il download nell'Area download Microsoft all'indirizzo https://www.microsoft.com/downloads.
  • Microsoft Visual Studio 2005 o .NET Framework SDK 2.0
    È consigliabile utilizzare Visual Studio 2005 per generare o personalizzare l'applicazione di esempio ascmd. Se non si dispone di Visual Studio 2005, è possibile utilizzare .NET Framework SDK 2.0, il quale include MSBuild.exe. Vedere la sezione relativa alla compilazione dell'esempio più avanti in questo documento.

Argomenti

L'utilità ascmd supporta gli argomenti della riga di comando seguenti.

  • –Ulogin_id
    ID di accesso dell'utente per il quale non viene fatta distinzione tra maiuscole e minuscole.

    [!NOTA] l'utilizzo di login_id è diverso in sqlcmd rispetto a ascmd. In sqlcmd, login_id rappresenta l'account di accesso di SQL Server, in ascmd rappresenta invece un account di accesso di Windows.

    Per l'accesso TCP/IP, Analysis Services supporta solo connessioni trusted. Se viene specificato il parametro –U insieme alla password corrispondente per il parametro –P, l'utilità della riga di comando ascmd esegue l'accesso al sistema operativo Windows mediante l'account specificato e quindi lo rappresenta per l'esecuzione di script XMLA, query MDX o istruzioni DMX. L'ID di accesso deve essere specificato nel formato <domain>\<username>,. L'indicazione del dominio è obbligatoria. Se non viene specificato il parametro –U, viene utilizzato per l'autenticazione l'account di Windows dell'utente che esegue l'utilità della riga di comando ascmd.

    Se viene specificata una connessione HTTP o HTTPS mediante il parametro –S, l'utilità della riga di comando ascmd non esegue l'accesso al sistema operativo Windows. I parametri –U e –P (se presenti) vengono inclusi nella stringa di connessione al server IIS (Internet Information Services). A seconda della configurazione di IIS, i parametri –U e –P possono essere utilizzati per l'autenticazione di base. Per ulteriori informazioni sul parametro della stringa di connessione "UID", vedere la classe AdomdConnection nella documentazione in linea di SQL Server 2005.

  • –Ppassword
    Password corrispondente all'utente specificato nel parametro –U. Se il parametro –U viene utilizzato senza il parametro –P, la password viene considerata assente, ovvero una stringa a lunghezza zero, vuota. Se si specifica il parametro –P senza il parametro –U, –P viene ignorato.

    ms365187.security(it-it,SQL.90).gifNota sulla protezione:
    Non utilizzare una password vuota. Utilizzare una password complessa. Per ulteriori informazioni, vedere Password complesse nella documentazione in linea di SQL Server 2005. La password specificata nel parametro –P viene archiviata come testo non crittografato nel file dello script, della query o dell'istruzione. Risulterà pertanto visibile a chiunque si trovi davanti al monitor oppure legga il file. Se si utilizza questa funzionalità, associare elenchi di controllo di accesso ai file oppure utilizzare altre tecniche di protezione per impedire la lettura del file da parte di utenti non autorizzati.
  • –Sserver\instance o –Shttp[s]://server[:port]/virtualdirectory/msmdpump.dll
    Specifica l'istanza di Analysis Services a cui l'utilità della riga di comando ascmd deve connettersi per l'esecuzione. Se non viene specificato il parametro –P, l'utilità ascmd si connette all'istanza predefinita di Analysis Services nel computer locale che esegue TCP (connessione a localhost) ed esegue lo script XMLA, la query MDX o l'istruzione DMX.
  • –ddatabase
    Specifica il database su cui deve essere eseguita una query MDX o un'istruzione DMX. Il parametro –d viene ignorato se l'utilità della riga di comando ascmd esegue uno script XMLA, poiché in questo caso il nome del database è incorporato nello script stesso.
  • –tquery-timeout
    Specifica il numero di secondi che devono trascorrere prima del timeout dell'esecuzione di uno script XMLA, una query MDX o un'istruzione DMX. L'utilità della riga di comando ascmd aggiunge la clausola TIMEOUT =<query-timeout> alla stringa di connessione.
  • –tcconnect-timeout
    Specifica il numero di secondi che devono trascorrere prima del timeout della connessione di ascmd all'istanza di Analysis Services. L'utilità della riga di comando ascmd aggiunge la clausola CONNECT TIMEOUT =<connect-timeout> alla stringa di connessione.
  • –iinput-file
    Indica il file contenente lo script XMLA, la query MDX o l'istruzione DMX. Per utilizzare l'utilità della riga di comando ascmd è necessario specificare un valore per il parametro –i oppure per il parametro -Q. Se non viene specificato alcun valore per –i o –Q oppure vengono specificati entrambi, viene generato un errore.

    [!NOTA] A differenza di sqlcmd che può gestire più file di input, l'utilità ascmd è in grado di elaborare un solo file di input per volta. Se si dispone di più file di input, è necessario chiamarli ed eseguirli separatamente.

    Il file di input specificato con il parametro –i o –Q deve presentare una struttura XML valida e i caratteri speciali devono essere codificati in HTML. Ad esempio, quando si utilizza una e commerciale (&) all'interno del testo, è necessario codificarla come &amp;. Pertanto [Product].&[1922] verrà codificato nella forma [Product].&amp;[1922]. In modo analogo, il segno di minore (<) deve essere codificato come &lt;, il segno di maggiore (>) come &gt; e le virgolette doppie (") come &quot;. Si tratta di un aspetto importante per le query MDX e le istruzioni DMX perché la sintassi delle chiavi membro utilizza il carattere e commerciale (&).

    [!NOTA] Se il testo di input non ha l'aspetto di uno script XMLA, ovvero non inizia con un comando XMLA valido quale <Statement> o <Create> (vedere l'elenco completo più avanti in questo documento), l'utilità della riga di comando ascmd considera il testo come comando <Statement> e codifica automaticamente il testo in formato HTML e ne esegue il wrapping in un tag degli elementi XML <Statement> … </Statement>. Questa soluzione consente di facilitare l'esecuzione delle query MDX e delle istruzioni DMX. È possibile eseguire questa operazione se si desidera utilizzare gli elementi <Statement> per scrivere codice HTML personalizzato. L'utilità della riga di comando ascmd accetta qualsiasi comando XMLA valido.

    Un file di input può contenere più batch separati da comandi GO. Ogni batch all'interno di un file di input può contenere uno script XMLA e una query MDX o un'istruzione DMX. Ogni comando GO deve essere inserito su una riga separata. Quando viene rilevato un comando GO, il sistema invia l'input che precede tale comando al server. Al termine del flusso di input è presente un comando GO implicito. Il file di output generato viene formattato eseguendo il wrapping dei flussi XML restituiti con un elemento <multiple-batches>. Vedere lo scenario 11 per un esempio di file di input contenente batch multipli.

    Ogni batch viene eseguito correttamente o scorrettamente, indipendentemente dagli altri. Il valore di stato restituito per ogni batch viene registrato nel file di output che deve essere analizzato per determinare la corretta o scorretta esecuzione di ogni batch.

  • –ooutput-file | NUL | NUL:filename
    Indica il file che riceve (in XML) i risultati dello script XMLA o il set di celle restituito dalla query MDX o l'istruzione DMX. Se il file specificato esiste già, viene automaticamente sovrascritto. È necessario racchiudere tra virgolette i nomi di file contenenti spazi (""). Se il nome di file non è valido, viene generato un messaggio di errore e l'utilità ascmd viene chiusa.

    L'utilità della riga di comando ascmd non supporta la scrittura simultanea di più processi di ascmd nello stesso file. In questo caso infatti l'output del file risulterà danneggiato o errato.

    Se il file di output specificato è NUL o NUL:filename, i risultati dell'esecuzione vengono ignorati, a meno che non si utilizzi il parametro –T per specificare un file di traccia nel quale archiviare i risultati. L'impostazione di un file di output NUL e del parametro –T risulta particolarmente utile quando si specifica un livello di traccia Duration con il parametro –Tl.

    È ad esempio possibile creare una serie di query MDX ed eseguirle con l'utilità della riga di comando ascmd, ignorare l'output (le cui dimensioni potrebbero essere notevoli), registrare le durate delle query in un file di traccia e quindi caricare i valori di durata in un database. In questo modo le variazioni delle prestazioni potranno essere valutate nel tempo. In alternativa, è possibile utilizzare il livello di traccia Duration-result con il parametro –Tl per includere sia i risultati di esecuzione sia i valori di durata nel file di traccia.

    [!NOTA] L'utilità della riga di comando ascmd supporta la codifica internazionale. Per i file di input e output viene utilizzata la codifica UTF-8 con gli indicatori per l'ordine dei byte abilitati. Se l'editor di testo in uso non supporta la codifica UTF-8 e nella query MDX, nello script XMLA o nell'istruzione DMX sono presenti caratteri internazionali, è possibile utilizzare il Blocco note per convertire il file di input in formato UTF-8. A tale scopo, aprire Blocco note, scegliere Salva con nome dal menu File e nella casella Codifica selezionare UTF-8. Sarà quindi possibile utilizzare il file insieme al parametro –i. I file di output e di traccia (–o e –T) vengono sempre scritti con codifica UTF-8 e indicatori per l'ordine dei byte in modo da mantenere i caratteri Unicode.

  • –Ttrace-file
    Indica un file che riceve gli eventi di traccia di Analysis Services dall'utilità della riga di comando ascmd che esegue lo script XMLA, la query MDX o l'istruzione DMX. Se il file esiste già, viene automaticamente sovrascritto, a meno che non si tratti di un file di traccia creato con le impostazioni dei parametri –TlDuration e –TlDuration-result. È necessario racchiudere tra virgolette i nomi di file contenenti spazi (""). Se il nome di file non è valido, viene generato un messaggio di errore e l'utilità ascmd viene chiusa.

    L'utilità della riga di comando ascmd non supporta la scrittura simultanea di più processi di ascmd nello stesso file. In questo caso infatti l'output del file risulterà danneggiato o errato. Se il parametro –T non viene specificato, l'output di traccia non viene acquisito e i parametri –Tf, –Tl, Td e –Tt vengono ignorati.

    [!NOTA] il parametro –T non è disponibile se si utilizza l'accesso HTTP o HTTPS. È necessario utilizzare una normale connessione client/server specificando il parametro –S.

  • –xcextended-connect-string
    Specifica una stringa di connessione estesa inserita direttamente nella stringa di connessione senza alcun valore di controllo. È consigliabile non includere nella stringa punti e virgola (;) iniziali o finali. La stringa di connessione estesa seguente modifica ad esempio la dimensione del pacchetto di rete utilizzato tra il server e il processo ascmd da 4096 a 16384 e richiede inoltre che le impostazioni internazionali del client siano configurate su en-US, ovvero Inglese (Stati Uniti).

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

    Per impostazione predefinita, l'utilità della riga di comando ascmd non aggiunge informazioni estese della stringa di connessione. Sebbene molte delle opzioni dell'utilità ascmd possano essere implementate come impostazioni estese della stringa di connessione, ad esempio impostando direttamente Database=<database name>, è consigliabile utilizzare se possibile le opzioni standard di ascmd e avvalersi delle impostazioni estese solo in caso di necessità.

  • –Tftext | csv
    Specifica il formato file per il parametro –T, se quest'ultimo è specificato. Il valore predefinito è csv. Sono disponibili le opzioni seguenti:

    • Per Text, il file viene scritto in formato testo. Di seguito sono riportati alcuni esempi di formati:
      <ora corrente> <classe di evento>.<sottoclasse di evento>, [nome=valore]
    • Per csv, il file viene scritto in formato separato da virgole. Il delimitatore di colonna predefinito è | (barra verticale). Utilizzare il parametro –Td per modificare il delimitatore predefinito per i file in formato CSV. La prima riga del file specifica le intestazioni di colonna per i valori.
  • –Tddelim-char
    Specifica un unico carattere come delimitatore del file di traccia se viene specificato csv come formato di tale file che utilizza il parametro –Tf. Il carattere predefinito è | (barra verticale).
  • –Tttrace-timeout
    Specifica il numero di secondi di attesa del motore di Analysis Services prima di terminare la traccia, nel caso in cui si specifichi il parametro –T. La traccia viene considerata conclusa se non viene registrato alcun messaggio durante il periodo di tempo specificato. Il valore di timeout di traccia predefinito è di 5 secondi.
  • –Tltrace-level
    Specifica quali dati vengono raccolti e registrati nel file di traccia. Al parametro possono essere assegnati i cinque valori seguenti:

    • High: registra tutti gli eventi di traccia. Si tratta dell'impostazione predefinita.
    • Medium: registra tutti gli eventi di traccia ad eccezione degli eventi ProgressReportCurrent e Notification.
    • Low: registra solo gli eventi di traccia contenenti "End" o "Error".
    • Duration: non registra alcun evento di traccia, bensì determina la durata dell'esecuzione dello script, della query o dell'istruzione da parte del processo di ascmd. Scrive un'unica voce nel file di traccia contenente l'ora corrente, la durata, il testo di esecuzione, il nome del server e del database.
    • Duration-result: registra le medesime informazioni dell'impostazione Duration, nonché il risultato dell'esecuzione nell'ultima colonna del file di traccia.

    [!NOTA] I file di traccia generati con le impostazioni Duration e Duration-result non vengono sovrascritti a ogni esecuzione, come invece avviene nel caso dei file generati con le impostazioni High, Medium e Low. Se invece si utilizzano le impostazioni Duration e Duration-result ed esiste già un file di traccia, quest'ultimo viene aperto e vi vengono accodati i nuovi valori. Se il file di traccia non esiste già, viene creato.

  • –Q*"cmdline query or script"*
    Specifica la query, l'istruzione o lo script effettivo direttamente nella riga di comando anziché in un file.

    [!NOTA] L'utilità della riga di comando sqlcmd supporta un'ulteriore modalità per specificare la query di input, ovvero mediante il parametro –q. Poiché tale opzione esegue operazioni di lettura su sysinput, non è tuttavia possibile scriverla a meno che non si aggiungano altri costrutti di linguaggio. Lo strumento sqlcmd utilizza ad esempio "go" ed "exit" per controllare i comandi di sysinput. Questa modalità di scrittura dell'input della query non è supportato dall'utilità della riga di comando ascmd.

  • –v var=valore...
    Specifica ulteriori variabili di scripting. A ogni variabile è associata una coppia var = valore. Se il valore contiene spazi o caratteri di controllo, è necessario racchiuderlo tra virgolette doppie ("). Ad esempio,

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

    È possibile specificare nessuna, una o più coppie var = valore.

  • –? o /?
    Visualizza il riepilogo della sintassi delle opzioni dell'utilità della riga di comando ascmd.

Crittografia delle chiavi e compilazione dell'esempio

Se non è stato ancora creato un file di chiave con nome sicuro, generare il file di chiave seguendo le istruzioni seguenti.

Per generare un file di chiave con nome sicuro

  1. Aprire il prompt dei comandi di Microsoft Visual Studio 2005. Fare clic sul pulsante Start, scegliere Tutti i programmi, Microsoft .NET Framework SDK 2.0, quindi SDK Command Prompt.

    -- oppure --

    Aprire il prompt dei comandi di Microsoft .NET Framework. Fare clic sul pulsante Start, scegliere Tutti i programmi, Microsoft .NET Framework SDK 2.0, quindi SDK Command Prompt.

  2. Utilizzare il comando CD (change directory) per passare dalla directory corrente della finestra del prompt dei comandi alla cartella in cui sono stati installati gli esempi.

    [!NOTA] Per determinare la cartella in cui si trovano gli esempi, fare clic sul pulsante Start, scegliere Tutti i programmi, Microsoft SQL Server 2005, Documentazione ed esercitazioni, quindi Samples. Se è stato utilizzato il percorso di installazione predefinito, gli esempi si troveranno in <unità_sistema>:\Programmi\Microsoft SQL Server\100\Samples.

  3. Al prompt dei comandi digitare il comando seguente per generare il file di chiave:

    sn -k SampleKey.snk

    ms365187.note(it-it,SQL.90).gifImportante:
    Per ulteriori informazioni sulla coppia di chiavi con nome sicuro, vedere l'argomento relativo ai nomi sicuri e alla protezione in .NET Framework nel centro per sviluppatori di .NET su MSDN.

È possibile eseguire la compilazione dell'esempio utilizzando una delle due tecniche seguenti.

  • MedianteVisual Studio 2005 compilare l'esempio utilizzando la soluzione per Visual Studio disponibile nella cartella <install_path>\Samples\Analysis Services\Administrator\ascmd\cs.

  • Mediante MSBuild, incluso in .NET Framework SDK 2.0: compilare l'esempio eseguendo i comandi seguenti al prompt dei comandi:

    cd Analysis Services\Administrator\ascmd\CS\ascmd
    msbuild ascmd.csproj /nologo /v:quiet /p:Configuration=Debug;Platform=<platform>
    

[!NOTA] Microsoft Visual Studio è completamente supportato nei computer con processore x86 e x64, ma non nei computer con processore Itanium. Dopo la compilazione dell'utilità della riga di comando ascmd, è possibile eseguire ascmd su qualsiasi computer x86, x-64 o Itanium.

Nel codice sopra riportato, il valore del parametro <platform> può essere x86 per i computer a 32 bit, x64 per i computer con processore x64 o Itanium per i computer IA-64. È consigliabile compilare la versione appropriata dell'utilità della riga di comando ascmd poiché le prestazioni potrebbero risultare ridotte se si esegue codice a 32 bit in una piattaforma a 64 bit.

[!NOTA] Se si compila l'utilità ascmd in un computer la cui architettura è diversa da quella del computer di destinazione, ad esempio se si compila ascmd in un computer a 32 bit specificando il valore del parametro x64 o Itanium, verranno visualizzati tre avvisi che indicano l'indisponibilità di tre diverse DLL di sistema poiché la destinazione fa riferimento a un processore diverso. Si tratta del comportamento previsto. Dopo aver compilato l'utilità della riga di comando ascmd, copiare il file eseguibile compilato nel server di destinazione ed eseguirlo da tale server, in cui sono disponibili le DLL appropriate.

Utilizzo di variabili di ambiente e scripting

L'utilità della riga di comando ascmd supporta variabili di scripting definite dall'utente e riservate del sistema che possono essere utilizzate negli script XMLA, nelle query MDX e nelle istruzioni DMS. È possibile popolare i valori di tali variabili specificando i valori relativi alle variabili di ambiente oppure quelli per i parametri della riga di comando.

Le regole seguenti si applicando alle variabili di ambiente e alle variabili di scripting definite dall'utente:

  • Una variabile può contenere un numero qualsiasi di caratteri minuscoli, maiuscoli, cifre, trattini (-) o caratteri di sottolineatura (_).
  • Una variabile non può contenere caratteri incorporati o di controllo, ad esempio CR, LF, TAB.

Variabili di scripting riservate del sistema

Le variabili di scripting del sistema sono variabili definite dall'utilità della riga di comando ascmd allo scopo di contenere i valori associati a ogni parametro della riga di comando. In alcuni casi, è inoltre possibile utilizzare le variabili di ambiente per contenere i valori delle variabili di scripting del sistema. Le variabili di scripting del sistema possono essere popolate oppure possono derivare dalle variabili di ambiente e dai parametri della riga di comando. Il valore specificato per il parametro della riga di comando, se presente, sovrascrive quello della variabile di ambiente.

Nella tabella seguente vengono descritte le variabili di scripting del sistema, i relativi parametri della riga di comando e, dove applicabile, le variabili di ambiente associate.

[!NOTA] Esistono tre variabili di scripting del sistema che è possibile impostare mediante un parametro della riga di comando, ovvero –i, –o e –T. Non è disponibile alcuna variabile di ASCMD corrispondente che è possibile utilizzare per popolare la variabile di scripting del sistema corrispondente a tali parametri.

Variabile di scripting del sistema Parametro Variabile di ambiente (se presente)

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

Si noti che in alcuni casi nella tabella precedente più variabili di scripting del sistema derivano da un unico parametro o variabile di ambiente. Nell'esempio seguente, tre variabili di scripting del sistema derivano dall'impostazione della variabile di ambiente ASCMDSERVER.

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

L'istruzione SET precedente che specifica un valore per la variabile di ambiente ASCMDSERVER imposta i valori seguenti per le tre variabili di scripting del sistema seguenti:

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

Nell'esempio seguente, le stesse variabili di scripting del sistema vengono popolate con diversi valori mediante un'altra istruzione SET:

  • C:\>SET ASCMDSERVER=myserver\myinstance

L'istruzione SET precedente che specifica un valore per la variabile di ambiente ASCMDSERVER imposta i valori seguenti per le tre variabili di scripting del sistema seguenti:

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

Utilizzo delle variabili di scripting del sistema al prompt dei comandi

Se esiste una variabile di ambiente corrispondente a una variabile di scripting del sistema (la distinzione tra maiuscole e minuscole non è rilevante), il valore della variabile di ambiente viene utilizzato come predefinito per la variabile di scripting del sistema e per il relativo parametro della riga di comando. È ad esempio possibile utilizzare l'istruzione SET seguente per impostare la variabile di ambiente ASCMDBNAME:

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

In questo caso, "Adventure Works DW" verrà utilizzato come database predefinito (parametro –d) quando si esegue l'utilità della riga di comando ascmd a meno che non si specifichi un valore diverso nella riga di comando.

Utilizzo delle variabili di scripting del sistema in script, query o istruzioni

Le variabili di scripting definite dal sistema possono inoltre essere utilizzate in script XMLA; query MDX o istruzioni DMX. Negli esempi seguenti vengono illustrate chiamate della riga di comando dell'utilità ascmd che utilizzano variabili di scripting. Più avanti in questo documento vengono illustrati ulteriori esempi per descrivere gli scenari di utilizzo.

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

Variabili di scripting definite dall'utente

Una variabile di scripting definita dall'utente è una variabile che viene definita mediante il parametro –v della riga di comando oppure come una variabile di ambiente. Quando l'utilità della riga di comando ascmd rileva una variabile in uno script XMLA, una query MDX o un'istruzione DMX e la variabile non è stata popolata mediante il parametro –v, l'utilità cerca una variabile di ambiente con lo stesso nome e ne utilizza il valore. Se l'utilità della riga di comando ascmd non trova una variabile di ambiente corrispondente, la variabile di scripting viene eliminata e sostituita con una stringa vuota ("").

Le regole seguenti si applicato alle variabili di scripting definite dall'utente mediante il parametro –v della riga di comando:

  • Eventuali spazi iniziali o finali vengono rimossi dal valore della variabile.
  • La variabile non può iniziare con la stringa "ascmd".

Utilizzo di MDX, XMLA e DMX nei file di input

L'utilità della riga di comando ascmd supporta l'esecuzione di query MDX, istruzioni DMX e script XMLA all'interno di file di input. Lo script di input passato all'utilità ascmd è in effetti un elemento di comando XMLA.

Gli elementi di comando sono i seguenti:

  • Alter
  • Backup
  • Batch
  • BeginTransaction
  • Cancel
  • ClearCache
  • CommitTransaction
  • Create
  • Delete
  • DesignAggregations
  • Drop
  • Insert
  • Lock
  • MergePartitions
  • NotifyTableChange
  • Process
  • Restore
  • RollbackTransaction
  • Statement (utilizzato per eseguire query MDX e istruzioni DMX)
  • Subscribe
  • Synchronize
  • Unlock
  • Update
  • UpdateCells

Per eseguire i comandi in più oggetti alla volta, utilizzare il comando <Batch>. Per l'esecuzione di query MDX o istruzioni DMX, utilizzare il comando <Statement>. Per ulteriori informazioni, vedere Command Element (XMLA) nella documentazione in linea di SQL Server 2005. Negli esempi seguenti viene illustrato come strutturare le query MDX, le istruzioni DMX e gli script XMLA.

ms365187.note(it-it,SQL.90).gifImportante:
Analogamente a tutte le strutture XML, i comandi fanno distinzione tra maiuscole e minuscole. È pertanto necessario racchiudere tutte le query MDX in tag <Statement> .... </Statement> e il comando deve essere "Statement" e non "statement" o "STATEMENT".

Oltre che con i comandi XMLA, l'utilità della riga di comando ascmd può essere utilizzata per eseguire richieste XMLA personalizzate. È possibile eseguire praticamente qualsiasi richiesta che può essere espressa in formato XMLA. È ad esempio possibile utilizzare l'utilità della riga di comando ascmd per inviare una delle richieste XMLA seguenti:

  • Richieste Discover XMLA per eseguire query nei metadati di Analysis Services, che includono informazioni sugli elementi seguenti:
    • Gli oggetti archiviati in un database di Analysis Services, ad esempio i cubi definiti nel server
    • Le risorse utilizzate, ad esempio le connessioni al server aperte.
  • Richieste Execute che eseguono comandi modificandoli con un elenco di proprietà e un elenco di parametri. Un esempio di questo tipo di richiesta è disponibile di seguito in questo documento, nella sezione Esempio di richiesta Execute.

Se il testo di input non è formattato come comando XMLA, richiesta Discover o richiesta Execute, l'utilità della riga di comando ascmd lo considera una query MDX o un'istruzione DMX. In questo caso, l'utilità ascmd codifica il testo in formato HTML, ne esegue il wrapping in un elemento <Statement> … </Statement> e lo elabora come comando XMLA. Questa operazione facilita l'immissione di una query MDX o di un'istruzione DMX. Per un esempio dell'utilizzo di questa funzionalità, vedere lo scenario 1 "Esecuzione di query su un cubo di Analysis Services" più avanti in questo documento.

Esempio di MDX:

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

In questo esempio viene utilizzata una query MDX in un'istruzione XMLA per restituire il valore di Internet Gross Profit per ogni membro della gerarchia dell'attributo Employees contenente un valore nel cubo Adventure Works.

Esempio di 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>

In questo esempio viene utilizzata una query DMX in un'istruzione XMLA per modificare la struttura di data mining [Bike Buyer] aggiungendo un nuovo modello di data mining.

Esempio di XMLA:

<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 questo esempio viene utilizzata un'istruzione XMLA per elaborare completamente la partizione Internet_Sales_2001.

Esempio di richiesta Discover:

<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 questo esempio viene utilizzata una richiesta Discover XMLA per restituire i cubi disponibili nel database Adventure Works DW. Poiché le prospettive vengono restituite alle applicazioni come se si trattasse di cubi, i dati restituiti includono in realtà sia i cubi che le prospettive.

Esempio di richiesta Execute:

<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 questo esempio viene utilizzata una query MDX in un'istruzione XMLA. Si noti tuttavia che nella sezione Property List della richiesta XMLA è specificato il formato tabella e non multidimensionale per i dati restituiti. Il formato multidimensionale è quello predefinito per un comando Statement XMLA. Poiché il formato per i dati restituiti è di tabella (set di righe), il file di output può essere utilizzato da un'applicazione in grado di comprendere i set di righe bidimensionali xsd anziché i set di celle. Un set di righe bidimensionale è inoltre più semplice da caricare in un database relazionale di SQL, in quanto in questo caso è formattato come tabella.

Esempi di scenari relativi a ASCMD

Negli scenari seguenti viene illustrato l'utilizzo dell'utilità della riga di comando ascmd.

Scenario 1: Esecuzione di query su un cubo di Analysis Services

In questo scenario viene creato un file di input contenente una query MDX (il file query.mdx) che include la variabile di scripting "cube" definita dall'utente nella query MDX. Il file di input verrà quindi chiamato dall'utilità ascmd e verrà utilizzato il parametro –v per assegnare un valore alla variabile nella riga di comando.

file query.mdx:

Formato 1:

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

Formato 2:

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

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

Si noti che, utilizzando il formato 1, la chiave per gli Stati Uniti viene gestita sostituendo il codice MDX "&", che indica che si tratta della chiave membro e non del nome, con &amp;, in conformità alla codifica HTML, e che l'elemento <Statement> viene specificato. Si noti invece che con il formato 2 non è necessaria né la codifica HTML né l'elemento <Statement>. Questa situazione si verifica perché il testo di input non inizia con un comando XMLA valido e pertanto l'utilità della riga di comando ascmd considera il testo di input come istruzione, lo codifica automaticamente in formato HTML e ne esegue il wrapping in un elemento <Statement> prima dell'esecuzione.

Scenario 2: Backup di un database in un dominio non trusted

In questo scenario viene eseguito il backup di un database in un server di un dominio non trusted mediante l'utilità della riga di comando ascmd. Poiché il database si trova in un dominio non trusted, lo scenario richiede l'accesso HTTP. In questo scenario, sul server remoto denominato "myserver" sono in esecuzione sia Internet Information Services (IIS) sia Analysis Services ed è presente una directory virtuale di IIS denominata "olapadmin", configurata per l'utilizzo dell'autenticazione di base. Nel server remoto è inoltre presente un account locale denominato "olapadmin" che dispone di autorizzazioni di backup appropriate. Mediante i parametri della riga di comando di ascmd, verranno specificati nella riga di comando il nome del database, il metodo di accesso, il nome utente, la password, il file di backup, nonché un file di input XMLA (backup.xmla) contenente le variabili di scripting relative al database e al file di backup.

file backup.xmla:
<Backup xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
   <Object>
      <DatabaseID>$(ascmddbname)</DatabaseID>
   </Object>
   <File>$(backupfile).abf</File>
</Backup>
Esempio di riga di comando:

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

Si noti che nell'esempio della riga di comando viene utilizzato HTTPS, in modo che la password venga crittografata per l'invio tramite la rete al server remoto.

Scenario 3: Elaborazione di più partizioni

In questo scenario vengono elaborate più partizioni mediante l'utilità della riga di comando ascmd. Verranno utilizzate variabili di scripting nello script di elaborazione XMLA (process.xmla) per specificare il grado di parallelismo, i nomi del cubo e del database e il tipo di elaborazione. Viene inoltre illustrato l'uso di commenti in uno script XMLA. Quando si chiama lo script process.xmla dall'utilità ascmd, vengono specificati il nome del database e del server, un file di output per i risultati XMLA, un file di traccia per gli eventi di traccia, il livello di traccia e il grado di parallelismo all'interno di un batch (process.bat). Il file di traccia conterrà gli stessi eventi e informazioni che verrebbero restituiti da SQL Server Profiler in caso di monitoraggio del sistema da parte di un amministratore durante questo tipo di elaborazione.

file 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>
file 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

Si noti che il file batch utilizza un timestamp nel file di output in modo da poter registrare più esecuzioni contemporaneamente.

Scenario 4: Creazione di un nuovo database in un server

In questo scenario l'utilità della riga di comando ascmd viene utilizzata per chiamare un file script XMLA (create.xmla) che crea un nuovo database in un server. Il nome del database viene definito nello script XMLA mediante una variabile di scripting definita dall'utente, il cui valore viene definito nella riga di comando mediante il parametro –v.

file create.xmla:

Il file è stato creato con SQL Server Management Studio. Per creare un file personalizzato, fare clic con il pulsante destro del mouse sul database e scegliere Crea dal menu Script.

<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>
 . . .
Esempio di riga di comando:

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

Nello script XMLA precedente è inoltre possibile utilizzare variabili di scripting per configurare oggetti quali la stringa di connessione per un'origine dei dati, il nome del database e del server utilizzati nell'origine dei dati oppure i nomi dei campi inclusi nella vista origine dati.

Scenario 5: Creazione di un'applicazione per la preparazione della cache

In questo scenario viene utilizzato il file batch cache_warmer.bat per chiamare l'utilità della riga di comando ascmd in modo da eseguire alcune query MDX per la preparazione della cache dei dati di Analysis Services. È ad esempio possibile chiamare questo file batch mediante SQL Server Agent ogni giorno alle 2.00 oppure al termine del caricamento batch notturno. Nel file batch sono impostate le variabili di ambiente relative ai nomi del server, del database e del cubo. Poiché i nomi del server e del database specificati come variabili di ambiente corrispondono esattamente ai nomi delle variabili di scripting del sistema, diventano i valori predefiniti per i parametri –S e –d della riga di comando. La variabile di scripting definita dall'utente relativa al nome del cubo viene utilizzata in ogni query MDX.

file query1.mdx:

File: da query1.mdx a query6.mdx nel formato di query1.txt

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

Creare ulteriori file di query sostituendo [United States] con gli altri paesi inclusi in Adventure Works, ovvero [Australia], [Canada], [France], [Germany] e [United Kingdom].

file 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

Scenario 6: Creazione di una procedura di convalida

In questo scenario l'utilità della riga di comando ascmd viene utilizzata per chiamare alcuni file di query MDX analoghi a quelli dello scenario precedente, al termine dell'esecuzione ETL notturna. Viene utilizzato il parametro di durata –Tl per registrare la durata di ogni query MDX in un file di traccia insieme all'indirizzamento dell'output dello script MDX in un file NUL (–oNUL). È inoltre possibile utilizzare il parametro di durata –Tl insieme alla registrazione dei risultati di esecuzione in un log di traccia. L'utilità ascmd consente in questo modo di registrare la durata di ogni query MDX e di confrontare tali risultati ogni giorno in modo da verificare che vengano restituiti sempre valori compresi nel medesimo intervallo. Se i risultati relativi alla durata in un determinato giorno risultano sostanzialmente al di fuori dell'intervallo, potrebbe essere necessario annullare i risultati dell'esecuzione ETL.

Esempio di riga di comando:

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

Scenario 7: Automazione della creazione e del training di un modello di data mining

In questo scenario l'utilità della riga di comando ascmd viene utilizzata per chiamare la serie di istruzioni DMX seguente:

  • Un'istruzione DMX che crea una struttura di data mining (Bike Buyer Structure.DMX) e utilizza le variabili di ambiente per impostare il nome del server e del database.
  • Un'istruzione DMX (Clustering_Model.dmx) che aggiunge un modello di data mining di clustering alla struttura.
  • Un'istruzione DMX (DT_Model.dmx) che aggiunge un modello di data mining di struttura decisionale alla struttura.
  • Un'istruzione DMX (Process Bike Buyer Structure.dmx) per elaborare la struttura e i modelli di data mining.

Dopo l'implementazione della struttura di data mining è possibile utilizzare l'utilità della riga di comando ascmd per chiamare varie istruzioni DMX che eseguono query nella struttura tramite modelli di data mining diversi.

Creazione della struttura di data mining

File 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>

Esempio di riga di comando:

C:\>set ascmdserver=myserver

C:\>set ascmddbname=Adventure Works DW

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

Aggiunta del modello di data mining di cluster alla struttura

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

Esempio di riga di comando:

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

Aggiunta di un modello di data mining della struttura decisionale alla struttura

File 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>
Esempio di riga di comando:

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

Elaborazione della struttura e dei modelli di data mining

File Process 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>
Esempio di riga di comando:

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

Esecuzione di query sulla struttura mediante il modello di data mining della struttura decisionale

File SELECT_DRILLTHROUGH.dmx:
<Statement>
SELECT * 
FROM [Decision Tree].CASES
</Statement>
File 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>
File SELECT_DISCRETE.dmx:
<Statement>
SELECT DISTINCT [Bike Buyer] 
FROM [Decision Tree]
</Statement>
Esempio di riga di comando:

C:\>ascmd -i SELECT_DRILLTHROUGH.dmx

C:\>ascmd -i BATCH_PERDICTION.dmx

C:\>ascmd -i SELECT_DISCRETE.dmx

Scenario 8: Svuotamento della cache dei dati di Analysis Services

In questo scenario l'utilità della riga di comando ascmd verrà utilizzata per chiamare uno script XMLA (ClearCache.xmla) che svuota la cache dei dati di Analysis Services tra esecuzioni di prestazioni a fini di analisi delle prestazioni. Il file ClearCache.xmla contiene variabili di scripting relative ai nomi del cubo e del database. Lo script XMLA viene chiamato da un file batch (ClearCache.bat) che specifica il nome dell'istanza e del server, il nome del database, il nome del file di input, il nome del file di output e il nome del cubo.

File ClearCache.xmla:
<Batch xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
   <ClearCache>
               <Object>
                      <DatabaseID>$(ASCMDDBNAME)</DatabaseID>
                      <CubeID>$(CUBE)</CubeID>
               </Object>
       </ClearCache>
</Batch> 
File 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

Scenario 9: Determinazione degli utenti attualmente connessi al server

In questo scenario l'utilità della riga di comando ascmd viene utilizzata per recuperare l'elenco delle connessioni attive al server. Un'applicazione può utilizzare queste informazioni per ritardare l'elaborazione fino a quando utenti specifici non si disconnettono o per inviare un messaggio di posta elettronica agli operatori se un utente ha una connessione attiva, diversa dalla connessione per l'esecuzione batch notturna.

File 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>
Esempio di riga di comando:

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

Scenario 10: Determinazione dell'elaborazione di una partizione e, in caso affermativo, rilevamento dell'ultima elaborazione

In questo scenario l'utilità della riga di comando ascmd viene utilizzata per determinare se una partizione è stata elaborata e quando. Queste informazioni possono essere recuperate con facilità, in quanto sono memorizzate come proprietà dell'oggetto partizione. È quindi possibile utilizzare una richiesta DISCOVER_XML_METADATA per recuperare tali informazioni.

File 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>

Scenario 11: Utilizzo del comando GO per eseguire un'operazione writeback

In questo scenario viene utilizzata l'utilità della riga di comando ascmd per suddividere il writeback in due parti: modifica dei dati e relativo commit. Il writeback richiede l'utilizzo del comando GO perché le due istruzioni MDX necessarie per un'operazione writeback, ovvero le istruzioni Update Cube e Commit Transaction, devono essere eseguite in sequenza all'interno della stessa transazione. In MDX non è supportata la loro esecuzione all'interno dello stesso batch.

Per questo scenario è necessario modificare il database Adventure Works DW affinché supporti il writeback. Il database esistente infatti non dispone di un cubo di esempio che supporti il writeback. Per creare e verificare un cubo che supporti il writeback, eseguire i passaggi seguenti:

  1. Per definire un nuovo cubo denominato "Writeback"

  2. Aprire Business Intelligence Development Studio.

  3. Scegliere Apri dal menu File e quindi Database di Analysis Services.

  4. Nella finestra di dialogo Connetti al database digitare il nome del server nella casella di testo Server, selezionare il database Adventure Works DW nell'elenco Database e quindi fare clic su OK.

  5. Nel riquadro Esplora soluzioni fare clic con il pulsante destro del mouse su Cubi e quindi scegliere Nuovo cubo.

  6. Nella Creazione guidata cubo fare clic su Avanti nella pagina iniziale Creazione guidata cubo, selezionare Crea il cubo utilizzando un'origine dei dati, deselezionare la casella di controllo Creazione automatica e quindi fare clic su Avanti.

  7. Selezionare Adventure Works DW nell'elenco Viste origine dati disponibili della pagina Selezione vista origine dati e quindi fare clic su Avanti.

  8. Nella pagina Selezione tabelle dei fatti e delle dimensioni selezionare la casella di controllo Fatti per la tabella FactSalesQuota e la casella di controllo Dimensioni per le tabelle dbo.DimTime e dbo.DimEmployee e quindi fare clic su Avanti.

  9. dbo.DimTime (la dimensione è denominata Date)dbo.DimEmployeeFactSalesQuota (verrà utilizzata solo la misura "Sales Amount Quota")

  10. Nella pagina Verifica dimensioni condivise selezionare Date e Employee nell'elenco Dimensioni disponibili, fare clic su > per aggiungere le dimensioni all'elenco Dimensioni cubo e quindi fare clic su Avanti.

  11. Nella pagina Selezione misure deselezionare la casella di controllo Fact Sales Quota, selezionare la casella di controllo Sales Amount Quota e quindi fare clic su Avanti.

  12. Nella pagina Completamento procedura guidata modificare il nome del cubo in Writeback e quindi fare clic su Fine.

  13. Per attivare il writeback per il gruppo di misure Fact Sales Quota

  14. In Progettazione cubi selezionare la scheda Partizioni.

  15. Fare clic con il pulsante destro del mouse sulla partizione Fact Sales Quota nell'elenco di partizioni e quindi scegliere Impostazioni writeback.

  16. Nella finestra di dialogo Attiva Writeback - Fact Sales Quota controllare il nome della tabella writeback predefinita e quindi fare clic su OK per creare la tabella e attivare il writeback per la partizione.

  17. Verranno visualizzate due partizioni: una per la tabella dei fatti e una per la tabella writeback.

  18. Per elaborare il cubo Writeback

  19. Fare clic con il pulsante destro del mouse su Writeback nel nodo Cubi in Esplora soluzioni e quindi scegliere Elabora.

  20. Fare clic su quando viene chiesto se salvare le modifiche.

  21. Nella finestra di dialogo Elabora cubo - Writeback fare clic su Esegui.

  22. Se si espandono i comandi di elaborazione, verrà visualizzata l'istruzione CREATE TABLE SQL utilizzata per creare la tabella relazionale writeback.

  23. Al termine dell'elaborazione, verificare il completamento corretto del processo nella casella Stato e quindi fare clic su Chiudi.

  24. Fare clic nuovamente su Chiudi per chiudere la finestra di dialogo Elabora partizione - WriteTable_Fact Sales Quota.

  25. Chiudere Business Intelligence Development Studio.

  26. Per verificare il funzionamento corretto del writeback

  27. Aprire SQL Server Management Studio.

  28. Stabilire la connessione al server e quindi in Esplora oggetti espandere Database, fare clic con il pulsante destro del mouse su Adventure Works DW, selezionare Nuova query e quindi fare clic su MDX.

  29. Nella finestra Query MDX eseguire la query MDX seguente per restituire la quota di vendita corrente del primo trimestre 2002 di Stephen Y. Jiang:

    /* 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. Modificare la cella affinché restituisca $2.200 eseguendo l'istruzione MDX seguente:

    UPDATE CUBE [Writeback]
    SET ([Employee].[Employee].[Stephen Y. Jiang],
    [Date].[Calendar].[Calendar Quarter].[Q1 CY 2002]) = 2200
    
  31. Eseguire il commit della transazione con l'istruzione MDX seguente:

    COMMIT TRANSACTION
    

    A questo punto è possibile esaminare la tabella "dbo.WriteTable_Fact Sales Quota" del database relazionale Adventure Works DW per verificare gli effetti del writeback sulla cella. Si noterà che in questa tabella relazionale è stato scritto il valore delta (-88800). La tabella dei fatti originale è rimasta invariata.

writeback.mdx file:
/* 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
Esempio di riga di comando:

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>

Si noti che al centro sono presenti due set di risultati vuoti per l'istruzione UPDATE CUBE e l'istruzione COMMIT TRANSACTION.

Versione Cronologia

12 dicembre 2006

Contenuto modificato:
  • Documentazione di una nuova funzionalità: il supporto di batch multipli.
  • Aggiunta di un esempio per dimostrare l'utilizzo della nuova funzionalità.

17 luglio 2006

Contenuto modificato:
  • Descrizione di due nuove funzionalità: le richieste XMLA personalizzate e il rilevamento automatico del tipo di comando nel flusso di input.
  • Aggiunta di esempi aggiornati che illustrano l'utilizzo delle nuove funzionalità.

Vedere anche

Altre risorse

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

Guida in linea e informazioni

Assistenza su SQL Server 2005