Introduzione ai processi di Database ElasticiGetting started with Elastic Database jobs

I processi di database elastico (anteprima) per il database SQL di Azure consentono di eseguire in modo affidabile script T-SQL che si estendono su più database, effettuando tentativi automatici per garantire il completamento delle operazioni.Elastic Database jobs (preview) for Azure SQL Database allows you to reliably execute T-SQL scripts that span multiple databases while automatically retrying and providing eventual completion guarantees. Per altre informazioni sulla funzionalità del processo Database elastico, vedere Processi elastici.For more information about the Elastic Database job feature, see Elastic jobs.

Questo articolo supporta l'esempio presentato in Iniziare a utilizzare gli strumenti del database elastico.This article extends the sample found in Getting started with Elastic Database tools. Al termine, si apprenderà come creare e gestire processi di gestione di un gruppo di database correlati.When completed, you learn how to create and manage jobs that manage a group of related databases. Non è necessario usare gli strumenti di scalabilità elastica per sfruttare i vantaggi dei processi elastici.It is not required to use the Elastic Scale tools in order to take advantage of the benefits of Elastic jobs.

prerequisitiPrerequisites

Scaricare ed eseguire Introduzione allo strumento di esempio del Database elastico.Download and run the Getting started with Elastic Database tools sample.

Creare un gestore mappe partizione utilizzando l'applicazione di esempioCreate a shard map manager using the sample app

Di seguito si crea un gestore mappe partizioni con diverse partizioni, seguita dall'inserimento di dati nelle partizioni.Here you create a shard map manager along with several shards, followed by insertion of data into the shards. Se si dispone già di programma di installazione di partizioni con dati partizionati in essi, è possibile ignorare i passaggi seguenti e passare alla sezione successiva.If you already have shards set up with sharded data in them, you can skip the following steps and move to the next section.

  1. Compilare ed eseguire l’applicazione di esempio Introduzione agli strumenti del Database elastico .Build and run the Getting started with Elastic Database tools sample application. Seguire la procedura fino al passaggio 7 nella sezione Scaricare ed eseguire l'app di esempio.Follow the steps until step 7 in the section Download and run the sample app. Alla fine del passaggio 7, verrà visualizzato il seguente prompt dei comandi:At the end of Step 7, you see the following command prompt:

    Aprire il prompt dei comandi.

  2. Nella finestra di comando, digitare "1" e premere Invio.In the command window, type "1" and press Enter. Viene creato il gestore delle mappe partizioni e aggiunge due partizioni al server.This creates the shard map manager, and adds two shards to the server. Digitare "3" e premere Invia. Ripetere l'operazione quattro volte.Then type "3" and press Enter; repeat this action four times. Consente di inserire righe di dati di esempio nelle partizioni.This inserts sample data rows in your shards.

  3. Il portale di Azure dovrebbe mostrare tre nuovi database:The Azure portal should show three new databases:

    Conferma di Visual Studio

    A questo punto, si creerà un insieme di database personalizzati che riflette tutti i database nella mappa partizioni.At this point, we create a custom database collection that reflects all the databases in the shard map. Questo consentirà di creare ed eseguire un processo che aggiunge una nuova tabella tra le partizioni.This allows us to create and execute a job that adds a new table across shards.

Si creerà una destinazione di partizionamento della mappa, utilizzando il cmdlet New-AzureSqlJobTarget .Here we would usually create a shard map target, using the New-AzureSqlJobTarget cmdlet. Il database di gestione della mappa di partizione deve essere impostato come destinazione di database e quindi il mapping di partizione specifico viene specificato come destinazione.The shard map manager database must be set as a database target and then the specific shard map is specified as a target. In questo caso, invece, tutti i database nel server dovranno essere enumerati e aggiunti alla nuova raccolta personalizzata, ad eccezione del database master.Instead, we are going to enumerate all the databases in the server and add the databases to the new custom collection with the exception of master database.

Crea una raccolta personalizzata e aggiunge tutti i database nel server alla destinazione della raccolta personalizzata ad eccezione del database master.Creates a custom collection and add all databases in the server to the custom collection target with the exception of master.

 $customCollectionName = "dbs_in_server"
 New-AzureSqlJobTarget -CustomCollectionName $customCollectionName
 $ResourceGroupName = "ddove_samples"
 $ServerName = "samples"
 $dbsinserver = Get-AzureRMSqlDatabase -ResourceGroupName $ResourceGroupName -ServerName $ServerName
 $dbsinserver | %{
 $currentdb = $_.DatabaseName
 $ErrorActionPreference = "Stop"
 Write-Output ""

 Try
 {
    New-AzureSqlJobTarget -ServerName $ServerName -DatabaseName $currentdb | Write-Output
 }
 Catch
 {
     $ErrorMessage = $_.Exception.Message
     $ErrorCategory = $_.CategoryInfo.Reason

     if ($ErrorCategory -eq 'UniqueConstraintViolatedException')
     {
          Write-Host $currentdb "is already a database target."
     }

     else
     {
         throw $_
     }

 }

 Try
 {
     if ($currentdb -eq "master")
     {
         Write-Host $currentdb "will not be added custom collection target" $CustomCollectionName "."
     }

     else
     {
         Add-AzureSqlJobChildTarget -CustomCollectionName $CustomCollectionName -ServerName $ServerName -DatabaseName $currentdb
         Write-Host $currentdb "was added to" $CustomCollectionName "."
     }

 }
 Catch
 {
     $ErrorMessage = $_.Exception.Message
     $ErrorCategory = $_.CategoryInfo.Reason

     if ($ErrorCategory -eq 'UniqueConstraintViolatedException')
     {
          Write-Host $currentdb "is already in the custom collection target" $CustomCollectionName"."
     }

     else
     {
         throw $_
     }
 }
 $ErrorActionPreference = "Continue"
}

Creare uno Script T-SQL per l'esecuzione tra databaseCreate a T-SQL Script for execution across databases

 $scriptName = "NewTable"
 $scriptCommandText = "
 IF NOT EXISTS (SELECT name FROM sys.tables WHERE name = 'Test')
 BEGIN
     CREATE TABLE Test(
         TestId INT PRIMARY KEY IDENTITY,
         InsertionTime DATETIME2
     );
 END
 GO
 INSERT INTO Test(InsertionTime) VALUES (sysutcdatetime());
 GO"

 $script = New-AzureSqlJobContent -ContentName $scriptName -CommandText $scriptCommandText
 Write-Output $script

Creare il processo per eseguire uno script in un gruppo personalizzato di databaseCreate the job to execute a script across the custom group of databases

 $jobName = "create on server dbs"
 $scriptName = "NewTable"
 $customCollectionName = "dbs_in_server"
 $credentialName = "ddove66"
 $target = Get-AzureSqlJobTarget -CustomCollectionName $customCollectionName
 $job = New-AzureSqlJob -JobName $jobName -CredentialName $credentialName -ContentName $scriptName -TargetId $target.TargetId
 Write-Output $job

Eseguire il processoExecute the job

Il seguente script PowerShell può essere utilizzato per eseguire un processo esistente:The following PowerShell script can be used to execute an existing job:

Aggiornare la variabile seguente per riflettere il nome del processo desiderato da eseguire:Update the following variable to reflect the desired job name to have executed:

 $jobName = "create on server dbs"
 $jobExecution = Start-AzureSqlJobExecution -JobName $jobName
 Write-Output $jobExecution

Recuperare lo stato di un singolo processo di esecuzioneRetrieve the state of a single job execution

Usare lo stesso cmdlet Get-AzureSqlJobExecution con il parametro IncludeChildren per visualizzare lo stato delle esecuzioni del processo figlio, ovvero lo stato specifico per ogni esecuzione del processo in ogni database di destinazione del processo.Use the same Get-AzureSqlJobExecution cmdlet with the IncludeChildren parameter to view the state of child job executions, namely the specific state for each job execution against each database targeted by the job.

 $jobExecutionId = "{Job Execution Id}"
 $jobExecutions = Get-AzureSqlJobExecution -JobExecutionId $jobExecutionId -IncludeChildren
 Write-Output $jobExecutions

Visualizzare lo stato su più esecuzioni del processoView the state across multiple job executions

Il cmdlet Get-AzureSqlJobExecution ha più parametri facoltativi che possono essere utilizzati per visualizzare più esecuzioni di processo, filtrate tramite i parametri forniti.The Get-AzureSqlJobExecution cmdlet has multiple optional parameters that can be used to display multiple job executions, filtered through the provided parameters. Di seguito vengono illustrati alcuni dei possibili modi per utilizzare Get-AzureSqlJobExecution:The following demonstrates some of the possible ways to use Get-AzureSqlJobExecution:

Recuperare tutte le esecuzioni attive di processo di primo livello:Retrieve all active top-level job executions:

 Get-AzureSqlJobExecution

Recuperare tutte le esecuzioni di processo di primo livello, incluse le esecuzioni di processo inattive:Retrieve all top-level job executions, including inactive job executions:

 Get-AzureSqlJobExecution -IncludeInactive

Recuperare tutte le esecuzioni di processo figlio di un ID di esecuzione processo fornito, incluse le esecuzioni di processo inattive:Retrieve all child job executions of a provided job execution ID, including inactive job executions:

 $parentJobExecutionId = "{Job Execution Id}"
 Get-AzureSqlJobExecution -AzureSqlJobExecution -JobExecutionId $parentJobExecutionId -IncludeInactive -IncludeChildren

Recuperare tutte le esecuzioni di processo create utilizzando una pianificazione / processo di combinazione, inclusi i processi inattivi:Retrieve all job executions created using a schedule / job combination, including inactive jobs:

 $jobName = "{Job Name}"
 $scheduleName = "{Schedule Name}"
 Get-AzureSqlJobExecution -JobName $jobName -ScheduleName $scheduleName -IncludeInactive

Recuperare tutti i processi destinati a una mappa di partizione specificata, inclusi i processi inattivi:Retrieve all jobs targeting a specified shard map, including inactive jobs:

 $shardMapServerName = "{Shard Map Server Name}"
 $shardMapDatabaseName = "{Shard Map Database Name}"
 $shardMapName = "{Shard Map Name}"
 $target = Get-AzureSqlJobTarget -ShardMapManagerDatabaseName $shardMapDatabaseName -ShardMapManagerServerName $shardMapServerName -ShardMapName $shardMapName
 Get-AzureSqlJobExecution -TargetId $target.TargetId -IncludeInactive

Recuperare tutti i processi destinati a una raccolta personalizzata specificata, inclusi i processi inattivi:Retrieve all jobs targeting a specified custom collection, including inactive jobs:

 $customCollectionName = "{Custom Collection Name}"
 $target = Get-AzureSqlJobTarget -CustomCollectionName $customCollectionName
 Get-AzureSqlJobExecution -TargetId $target.TargetId -IncludeInactive

Recuperare l'elenco delle esecuzioni delle attività di processo in una esecuzione di processo specifica:Retrieve the list of job task executions within a specific job execution:

 $jobExecutionId = "{Job Execution Id}"
 $jobTaskExecutions = Get-AzureSqlJobTaskExecution -JobExecutionId $jobExecutionId
 Write-Output $jobTaskExecutions

Recuperare i dettagli di esecuzione delle attività di processo:Retrieve job task execution details:

Il seguente script PowerShell può essere utilizzato per visualizzare i dettagli di un'esecuzione delle attività di processo, che è particolarmente utile durante il debug degli errori di esecuzione.The following PowerShell script can be used to view the details of a job task execution, which is particularly useful when debugging execution failures.

 $jobTaskExecutionId = "{Job Task Execution Id}"
 $jobTaskExecution = Get-AzureSqlJobTaskExecution -JobTaskExecutionId $jobTaskExecutionId
 Write-Output $jobTaskExecution

Recuperare gli errori all'interno delle esecuzioni delle attività di processoRetrieve failures within job task executions

L'oggetto JobTaskExecution include una proprietà per il ciclo di vita dell'attività insieme ad una proprietà del messaggio.The JobTaskExecution object includes a property for the Lifecycle of the task along with a Message property. Se l'esecuzione di un'attività di processo non riesce, la proprietà Lifecycle verrà impostata su Errore e la proprietà Message verrà impostata sul messaggio di eccezione risultante e il relativo stack.If a job task execution failed, the Lifecycle property is set to Failed and the Message property is set to the resulting exception message and its stack. Se un processo ha esito negativo, è importante visualizzare i dettagli delle attività di processo che non sono riuscite per un determinato processo.If a job did not succeed, it is important to view the details of job tasks that did not succeed for a given job.

 $jobExecutionId = "{Job Execution Id}"
 $jobTaskExecutions = Get-AzureSqlJobTaskExecution -JobExecutionId $jobExecutionId
 Foreach($jobTaskExecution in $jobTaskExecutions)
     {
     if($jobTaskExecution.Lifecycle -ne 'Succeeded')
         {
         Write-Output $jobTaskExecution
         }
     }

In attesa del completamento dell’esecuzione del processoWaiting for a job execution to complete

Il seguente script PowerShell può essere utilizzato per attendere che un’attività di processo venga completata: The following PowerShell script can be used to wait for a job task to complete:

 $jobExecutionId = "{Job Execution Id}"
 Wait-AzureSqlJobExecution -JobExecutionId $jobExecutionId

Creare un criterio di esecuzione personalizzataCreate a custom execution policy

I processi di database elastici supportano la creazione di criteri di esecuzione personalizzati che possono essere applicati all'avvio dei processi.Elastic Database jobs supports creating custom execution policies that can be applied when starting jobs.

Criteri di esecuzione che attualmente consentono la definizione di:Execution policies currently allow for defining:

  • Nome: Identificatore del criterio di esecuzione.Name: Identifier for the execution policy.
  • Timeout del processo: tempo totale prima che un processo venga annullato dai processi del database elastico.Job Timeout: Total time before a job is canceled by Elastic Database Jobs.
  • Intervallo tra tentativi iniziale: intervallo di attesa prima del primo tentativo.Initial Retry Interval: Interval to wait before first retry.
  • Intervallo massimo di tentativi: estremità degli intervalli tra i tentativi da utilizzare.Maximum Retry Interval: Cap of retry intervals to use.
  • Coefficiente di backoff dell’intervallo tra tentativi: coefficiente utilizzato per calcolare l’intervallo successivo tra i tentativi.Retry Interval Backoff Coefficient: Coefficient used to calculate the next interval between retries. Viene utilizzata la seguente formula: (Intervallo tentativi iniziale) * Math.pow((Coefficiente di backoff dell’intervallo), (Numero di tentativi) - 2).The following formula is used: (Initial Retry Interval) * Math.pow((Interval Backoff Coefficient), (Number of Retries) - 2).
  • Numero massimo di tentativi: Il numero massimo di tentativi all'interno di un processo.Maximum Attempts: The maximum number of retry attempts to perform within a job.

Il criterio di esecuzione predefinito utilizza i valori seguenti:The default execution policy uses the following values:

  • Nome: Criterio di esecuzione predefinitoName: Default execution policy
  • Timeout del processo: 1 settimanaJob Timeout: 1 week
  • Intervallo tra tentativi iniziale: 100 millisecondiInitial Retry Interval: 100 milliseconds
  • Intervallo massimo tra tentativi: 30 minutiMaximum Retry Interval: 30 minutes
  • Coefficiente di intervallo tra tentativi: 2Retry Interval Coefficient: 2
  • Numero massimo di tentativi: 2,147,483,647Maximum Attempts: 2,147,483,647

Creare il criterio di esecuzione desiderato:Create the desired execution policy:

 $executionPolicyName = "{Execution Policy Name}"
 $initialRetryInterval = New-TimeSpan -Seconds 10
 $jobTimeout = New-TimeSpan -Minutes 30
 $maximumAttempts = 999999
 $maximumRetryInterval = New-TimeSpan -Minutes 1
 $retryIntervalBackoffCoefficient = 1.5
 $executionPolicy = New-AzureSqlJobExecutionPolicy -ExecutionPolicyName $executionPolicyName -InitialRetryInterval $initialRetryInterval -JobTimeout $jobTimeout -MaximumAttempts $maximumAttempts -MaximumRetryInterval $maximumRetryInterval -RetryIntervalBackoffCoefficient $retryIntervalBackoffCoefficient
 Write-Output $executionPolicy

Aggiornare il criterio di esecuzione personalizzatoUpdate a custom execution policy

Aggiornare l'aggiornamento del criterio di esecuzione desiderato:Update the desired execution policy to update:

 $executionPolicyName = "{Execution Policy Name}"
 $initialRetryInterval = New-TimeSpan -Seconds 15
 $jobTimeout = New-TimeSpan -Minutes 30
 $maximumAttempts = 999999
 $maximumRetryInterval = New-TimeSpan -Minutes 1
 $retryIntervalBackoffCoefficient = 1.5
 $updatedExecutionPolicy = Set-AzureSqlJobExecutionPolicy -ExecutionPolicyName $executionPolicyName -InitialRetryInterval $initialRetryInterval -JobTimeout $jobTimeout -MaximumAttempts $maximumAttempts -MaximumRetryInterval $maximumRetryInterval -RetryIntervalBackoffCoefficient $retryIntervalBackoffCoefficient
 Write-Output $updatedExecutionPolicy

Annullare un processoCancel a job

I processi di database elastico supportano le richieste di annullamento dei processi.Elastic Database Jobs supports jobs cancellation requests. Se i processi del database elastico rilevano una richiesta di annullamento per un processo in fase di esecuzione, verrà effettuato un tentativo di arresto del processo.If Elastic Database Jobs detects a cancellation request for a job currently being executed, it attempts to stop the job.

E’ possibile cancellare un processo in due modi diversi tramite i processi di database elastici:There are two different ways that Elastic Database Jobs can perform a cancellation:

  1. Annullamento delle attività attualmente in esecuzione: se viene rilevato un annullamento mentre un'attività è attualmente in esecuzione, si tenterà di cancellare l'aspetto di esecuzione corrente dell'attività.Canceling Currently Executing Tasks: If a cancellation is detected while a task is currently running, a cancellation is attempted within the currently executing aspect of the task. Ad esempio se viene eseguita una query con esecuzione prolungata quando si tenta di eseguire un annullamento, si verificherà un tentativo di annullare la query.For example: If there is a long running query currently being performed when a cancellation is attempted, there is an attempt to cancel the query.
  2. Annullare i tentativi dell'attività: se viene rilevato un annullamento dal thread di controllo prima che venga avviata un'attività per l'esecuzione, il thread di controllo eviterà di avviare l'attività e dichiarerà annullata la richiesta.Canceling Task Retries: If a cancellation is detected by the control thread before a task is launched for execution, the control thread avoids launching the task and declare the request as canceled.

Se viene richiesto un annullamento del processo per un processo padre, tale richiesta verrà rispettata per il processo padre e per tutti i relativi processi figlio.If a job cancellation is requested for a parent job, the cancellation request is honored for the parent job and for all of its child jobs.

Per inviare una richiesta di annullamento, usare il cmdlet Stop-AzureSqlJobExecution e impostare il parametro JobExecutionId.To submit a cancellation request, use the Stop-AzureSqlJobExecution cmdlet and set the JobExecutionId parameter.

 $jobExecutionId = "{Job Execution Id}"
 Stop-AzureSqlJobExecution -JobExecutionId $jobExecutionId

Eliminare un processo in base al nome e la cronologia del processoDelete a job by name and the job's history

I processi di database elastici supportano l'eliminazione asincrona dei processi.Elastic Database jobs supports asynchronous deletion of jobs. Un processo può essere contrassegnato per l'eliminazione e il sistema lo eliminerà con tutta la relativa cronologia dopo il completamento di tutte le esecuzioni di processo per tale processo.A job can be marked for deletion and the system deletes the job and all its job history after all job executions have completed for the job. Il sistema non annulla automaticamente le esecuzioni di processo attive.The system does not automatically cancel active job executions.

Al contrario, è necessario richiamare Stop-AzureSqlJobExecution per annullare le esecuzioni di processo attive.Instead, Stop-AzureSqlJobExecution must be invoked to cancel active job executions.

Per attivare l'eliminazione di processi, usare il cmdlet Remove-AzureSqlJob e impostare il parametro JobName.To trigger job deletion, use the Remove-AzureSqlJob cmdlet and set the JobName parameter.

 $jobName = "{Job Name}"
 Remove-AzureSqlJob -JobName $jobName

Creare una destinazione database personalizzataCreate a custom database target

Le destinazioni personalizzate per i database possono essere definite nei processi di database elastici che possono essere utilizzati per l'esecuzione diretta o per l'inclusione in un gruppo di database personalizzato.Custom database targets can be defined in Elastic Database jobs which can be used either for execution directly or for inclusion within a custom database group. Poiché i pool elastici non sono ancora direttamente supportati tramite le API PowerShell, è sufficiente creare una destinazione database e una destinazione per la raccolta dei database personalizzate che comprenda tutti i database nel pool.Since elastic pools are not yet directly supported via the PowerShell APIs, you simply create a custom database target and custom database collection target which encompasses all the databases in the pool.

Impostare le seguenti variabili in modo da riflettere le informazioni desiderate sul database:Set the following variables to reflect the desired database information:

 $databaseName = "{Database Name}"
 $databaseServerName = "{Server Name}"
 New-AzureSqlJobDatabaseTarget -DatabaseName $databaseName -ServerName $databaseServerName

Creare una destinazione per la raccolta dei database personalizzataCreate a custom database collection target

È possibile definire una destinazione per la raccolta dei database personalizzata per consentire l'esecuzione in più destinazioni dei database definiti.A custom database collection target can be defined to enable execution across multiple defined database targets. Dopo aver creato un gruppo di database, i database possono essere associati alla destinazione della raccolta personalizzata.After a database group is created, databases can be associated to the custom collection target.

Impostare le seguenti variabili in modo da riflettere la configurazione della destinazione della raccolta personalizzata desiderata:Set the following variables to reflect the desired custom collection target configuration:

 $customCollectionName = "{Custom Database Collection Name}"
 New-AzureSqlJobTarget -CustomCollectionName $customCollectionName

Aggiungere database a una destinazione per la raccolta dei database personalizzataAdd databases to a custom database collection target

Le destinazioni di database possono essere associate alle destinazioni delle raccolte di database personalizzate per creare un gruppo di database.Database targets can be associated with custom database collection targets to create a group of databases. Ogni volta che viene creato un processo destinato a una raccolta di database personalizzata, esso verrà esteso ai database associati al gruppo al momento dell'esecuzione.Whenever a job is created that targets a custom database collection target, it is expanded to target the databases associated to the group at the time of execution.

Aggiungere il database desiderato a una raccolta personalizzata specifica:Add the desired database to a specific custom collection:

 $serverName = "{Database Server Name}"
 $databaseName = "{Database Name}"
 $customCollectionName = "{Custom Database Collection Name}"
 Add-AzureSqlJobChildTarget -CustomCollectionName $customCollectionName -DatabaseName $databaseName -ServerName $databaseServerName

Verificare i database in una destinazione per la raccolta dei database personalizzataReview the databases within a custom database collection target

Utilizzare il cmdlet Get-AzureSqlJobTarget per recuperare i database figlio all'interno di una destinazione di una raccolta database personalizzata.Use the Get-AzureSqlJobTarget cmdlet to retrieve the child databases within a custom database collection target.

 $customCollectionName = "{Custom Database Collection Name}"
 $target = Get-AzureSqlJobTarget -CustomCollectionName $customCollectionName
 $childTargets = Get-AzureSqlJobTarget -ParentTargetId $target.TargetId
 Write-Output $childTargets

Creare un processo per eseguire uno script in una destinazione di una raccolta database personalizzataCreate a job to execute a script across a custom database collection target

Utilizzare il cmdlet New-AzureSqlJob per creare un processo su un gruppo di database definito da una destinazione di raccolta database personalizzata.Use the New-AzureSqlJob cmdlet to create a job against a group of databases defined by a custom database collection target. I processi di database elastico espandono il processo in più processi figlio, ognuno corrispondente a un database associato alla destinazione di raccolta database personalizzata ed eseguono lo script in tutti i database.Elastic Database jobs expands the job into multiple child jobs each corresponding to a database associated with the custom database collection target and ensure that the script is executed against each database. Anche in questo caso, è importante che gli script siano idempotenti per essere flessibili ai tentativi.Again, it is important that scripts are idempotent to be resilient to retries.

 $jobName = "{Job Name}"
 $scriptName = "{Script Name}"
 $customCollectionName = "{Custom Collection Name}"
 $credentialName = "{Credential Name}"
 $target = Get-AzureSqlJobTarget -CustomCollectionName $customCollectionName
 $job = New-AzureSqlJob -JobName $jobName -CredentialName $credentialName -ContentName $scriptName -TargetId $target.TargetId
 Write-Output $job

Raccolta dei dati tra databaseData collection across databases

Processi di database elastici supportano l'esecuzione di una query su un gruppo di database e inviano i risultati alla tabella del database specificata.Elastic Database jobs supports executing a query across a group of databases and sends the results to a specified database’s table. E’ possibile eseguire una query sulla tabella dopo aver visualizzato i risultati della query da ciascun database.The table can be queried after the fact to see the query’s results from each database. Questo fornisce un meccanismo asincrono per eseguire una query in molti database.This provides an asynchronous mechanism to execute a query across many databases. I casi di errore, come quando ad esempio uno dei database viene reso temporaneamente non disponibile, vengono gestiti automaticamente tramite tentativi.Failure cases such as one of the databases being temporarily unavailable are handled automatically via retries.

La tabella di destinazione specificata verrà creata automaticamente se non esiste ancora, e corrisponderà allo schema del set di risultati restituito.The specified destination table is automatically created if it does not yet exist, matching the schema of the returned result set. Se l'esecuzione di uno script restituisce più set di risultati, i processi di database elastico invieranno solo il primo risultato alla tabella di destinazione specificata.If a script execution returns multiple result sets, Elastic Database jobs only sends the first one to the provided destination table.

Il seguente script PowerShell consente di eseguire uno script che raccolga i propri risultati in una tabella specificata.The following PowerShell script can be used to execute a script collecting its results into a specified table. Questo script presuppone che uno script T-SQL sia stato creato e che restituisca un singolo set di risultati e che una destinazione di raccolta database personalizzata sia stata creata.This script assumes that a T-SQL script has been created which outputs a single result set and a custom database collection target has been created.

Impostare quanto segue in modo da riflettere lo script, le credenziali e la destinazione di esecuzione desiderati:Set the following to reflect the desired script, credentials, and execution target:

 $jobName = "{Job Name}"
 $scriptName = "{Script Name}"
 $executionCredentialName = "{Execution Credential Name}"
 $customCollectionName = "{Custom Collection Name}"
 $destinationCredentialName = "{Destination Credential Name}"
 $destinationServerName = "{Destination Server Name}"
 $destinationDatabaseName = "{Destination Database Name}"
 $destinationSchemaName = "{Destination Schema Name}"
 $destinationTableName = "{Destination Table Name}"
 $target = Get-AzureSqlJobTarget -CustomCollectionName $customCollectionName

Creare e avviare un processo per scenari di raccolta datiCreate and start a job for data collection scenarios

 $job = New-AzureSqlJob -JobName $jobName -CredentialName $executionCredentialName -ContentName $scriptName -ResultSetDestinationServerName $destinationServerName -ResultSetDestinationDatabaseName $destinationDatabaseName -ResultSetDestinationSchemaName $destinationSchemaName -ResultSetDestinationTableName $destinationTableName -ResultSetDestinationCredentialName $destinationCredentialName -TargetId $target.TargetId
 Write-Output $job
 $jobExecution = Start-AzureSqlJobExecution -JobName $jobName
 Write-Output $jobExecution

Creare una pianificazione per l'esecuzione del processo utilizzando un trigger di processoCreate a schedule for job execution using a job trigger

Il seguente script di PowerShell può essere utilizzato per creare una pianificazione ricorrente.The following PowerShell script can be used to create a reoccurring schedule. Questo script usa l'intervallo di minuti, ma New-AzureSqlJobSchedule supporta anche i parametri -DayInterval, -HourInterval, -MonthInterval e -WeekInterval.This script uses a one minute interval, but New-AzureSqlJobSchedule also supports -DayInterval, -HourInterval, -MonthInterval, and -WeekInterval parameters. Le pianificazioni che vengono eseguite una sola volta possono essere create specificando -OneTime.Schedules that execute only once can be created by passing -OneTime.

Creare una nuova pianificazione:Create a new schedule:

 $scheduleName = "Every one minute"
 $minuteInterval = 1
 $startTime = (Get-Date).ToUniversalTime()
 $schedule = New-AzureSqlJobSchedule -MinuteInterval $minuteInterval -ScheduleName $scheduleName -StartTime $startTime
 Write-Output $schedule

Creare un trigger di processo per eseguire un processo in una pianificazione temporaleCreate a job trigger to have a job executed on a time schedule

È possibile definire un trigger di processo per eseguire un processo in base a una pianificazione temporale.A job trigger can be defined to have a job executed according to a time schedule. Il seguente script di PowerShell può essere utilizzato per creare un trigger di processo.The following PowerShell script can be used to create a job trigger.

Impostare le seguenti variabili in modo che corrispondano al processo e alla pianificazione desiderati:Set the following variables to correspond to the desired job and schedule:

 $jobName = "{Job Name}"
 $scheduleName = "{Schedule Name}"
 $jobTrigger = New-AzureSqlJobTrigger -ScheduleName $scheduleName -JobName $jobName
 Write-Output $jobTrigger

Rimuovere un'associazione pianificata per arrestare l'esecuzione di processo pianificataRemove a scheduled association to stop job from executing on schedule

Per sospendere l'esecuzione del processo ricorrente tramite un trigger di processo, è possibile rimuovere il trigger di processo.To discontinue reoccurring job execution through a job trigger, the job trigger can be removed. Rimuovere un trigger di processo per arrestare l’esecuzione di un processo in base a una pianificazione mediante il cmdlet Remove-AzureSqlJobTrigger .Remove a job trigger to stop a job from being executed according to a schedule using the Remove-AzureSqlJobTrigger cmdlet.

 $jobName = "{Job Name}"
 $scheduleName = "{Schedule Name}"
 Remove-AzureSqlJobTrigger -ScheduleName $scheduleName -JobName $jobName

Importare i risultati della query database elastica in ExcelImport elastic database query results to Excel

È possibile importare i risultati da di una query a un file di Excel.You can import the results from of a query to an Excel file.

  1. Avviare Excel 2013.Launch Excel 2013.
  2. Individuare il dati della barra multifunzione.Navigate to the Data ribbon.
  3. Fare clic su Da altre origini e quindi su Da SQL Server.Click From Other Sources and click From SQL Server.

    Importazione di Excel da altre origini

  4. In Connessione guidata dati digitare le credenziali di accesso e il nome del server.In the Data Connection Wizard type the server name and login credentials. Quindi fare clic su Next.Then click Next.

  5. Nella finestra di dialogo Selezionare il database contenente i dati desiderati selezionare il database ElasticDBQuery.In the dialog box Select the database that contains the data you want, select the ElasticDBQuery database.
  6. Selezionare la tabella Customers nella visualizzazione elenco e fare clic su Avanti.Select the Customers table in the list view and click Next. Fare clic su Fine.Then click Finish.
  7. Nel modulo Importa dati in Specificare come visualizzare i dati nella cartella di lavoro selezionare Tabella e fare clic su OK.In the Import Data form, under Select how you want to view this data in your workbook, select Table and click OK.

Tutte le righe dalla tabella Clienti , archiviate in diverse partizioni sono riportate nel foglio Excel.All the rows from Customers table, stored in different shards populate the Excel sheet.

Passaggi successiviNext steps

È ora possibile usare le funzioni dei dati di Excel.You can now use Excel’s data functions. Usare la stringa di connessione con il nome del server, il nome del database e le credenziali per connettere gli strumenti di integrazione e di Business Intelligence al database di query elastico.Use the connection string with your server name, database name and credentials to connect your BI and data integration tools to the elastic query database. Assicurarsi che SQL Server sia supportato come origine dati per lo strumento.Make sure that SQL Server is supported as a data source for your tool. Fare riferimento al database di query elastico e alle tabelle esterne come a qualsiasi database di SQL Server e tabella di SQL Server a cui ci si connette con lo strumento.Refer to the elastic query database and external tables just like any other SQL Server database and SQL Server tables that you would connect to with your tool.

CostiCost

L'uso della funzione di query di database elastico non comporta alcun costo aggiuntivo.There is no additional charge for using the Elastic Database query feature. In questo momento, tuttavia, questa funzionalità è disponibile solo con database e pool elastici Premium e Business Critical (anteprima) come endpoint, ma le partizioni possono essere di qualsiasi livello di servizio.However, at this time this feature is available only on Premium and Business Critical (preview) databases and elastic pools as an end point, but the shards can be of any service tier.

Per informazioni sui prezzi, vedere Dettagli prezzi del database SQL.For pricing information see SQL Database Pricing Details.

Risorse aggiuntiveAdditional resources

Se non si usano gli strumenti di database elastici,Not using elastic database tools yet? vedere la Guida introduttiva.Check out our Getting Started Guide. Se ci sono domande, è possibile visitare il forum sul database SQL mentre è possibile inserire le richieste di nuove funzionalità nel forum relativo a commenti e suggerimenti sul database SQL.For questions, please reach out to us on the SQL Database forum and for feature requests, please add them to the SQL Database feedback forum.