Skip to content

Commit b8a6eb1

Browse files
authored
Merge pull request #111387 from Minewiskan/azureas-nodes
Adding node movement article.
2 parents bf797c1 + d98af7a commit b8a6eb1

File tree

3 files changed

+58
-7
lines changed

3 files changed

+58
-7
lines changed

articles/analysis-services/TOC.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
href: analysis-services-connect.md
4040
- name: High availability
4141
href: analysis-services-bcdr.md
42+
- name: Long running operations
43+
href: analysis-services-long-operations.md
4244
- name: Supported data sources
4345
href: analysis-services-datasource.md
4446
- name: How-to

articles/analysis-services/analysis-services-async-refresh.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ description: Describes how to use the Azure Analysis Services REST API to code a
44
author: minewiskan
55
ms.service: azure-analysis-services
66
ms.topic: conceptual
7-
ms.date: 01/14/2020
7+
ms.date: 04/15/2020
88
ms.author: owend
99
ms.reviewer: minewiskan
1010

1111
---
1212
# Asynchronous refresh with the REST API
1313

14-
By using any programming language that supports REST calls, you can perform asynchronous data-refresh operations on your Azure Analysis Services tabular models. This includes synchronization of read-only replicas for query scale-out.
14+
By using any programming language that supports REST calls, you can perform asynchronous data-refresh operations on your Azure Analysis Services tabular models. This includes synchronization of read-only replicas for query scale-out.
1515

1616
Data-refresh operations can take some time depending on a number of factors including data volume, level of optimization using partitions, etc. These operations have traditionally been invoked with existing methods such as using [TOM](https://docs.microsoft.com/analysis-services/tom/introduction-to-the-tabular-object-model-tom-in-analysis-services-amo) (Tabular Object Model), [PowerShell](https://docs.microsoft.com/analysis-services/powershell/analysis-services-powershell-reference) cmdlets, or [TMSL](https://docs.microsoft.com/analysis-services/tmsl/tabular-model-scripting-language-tmsl-reference) (Tabular Model Scripting Language). However, these methods can require often unreliable, long-running HTTP connections.
1717

@@ -203,18 +203,18 @@ Here's a C# code sample to get you started, [RestApiSample on GitHub](https://gi
203203

204204
### To use the code sample
205205

206-
1. Clone or download the repo. Open the RestApiSample solution.
207-
2. Find the line **client.BaseAddress = …** and provide your [base URL](#base-url).
206+
1. Clone or download the repo. Open the RestApiSample solution.
207+
2. Find the line **client.BaseAddress = …** and provide your [base URL](#base-url).
208208

209209
The code sample uses [service principal](#service-principal) authentication.
210210

211211
### Service principal
212212

213213
See [Create service principal - Azure portal](../active-directory/develop/howto-create-service-principal-portal.md) and [Add a service principal to the server administrator role](analysis-services-addservprinc-admins.md) for more info on how to set up a service principal and assign the necessary permissions in Azure AS. Once you've completed the steps, complete the following additional steps:
214214

215-
1. In the code sample, find **string authority = …**, replace **common** with your organizations tenant ID.
216-
2. Comment/uncomment so the ClientCredential class is used to instantiate the cred object. Ensure the \<App ID> and \<App Key> values are accessed in a secure way or use certificate-based authentication for service principals.
217-
3. Run the sample.
215+
1. In the code sample, find **string authority = …**, replace **common** with your organization's tenant ID.
216+
2. Comment/uncomment so the ClientCredential class is used to instantiate the cred object. Ensure the \<App ID> and \<App Key> values are accessed in a secure way or use certificate-based authentication for service principals.
217+
3. Run the sample.
218218

219219

220220
## See also
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
---
2+
title: Best practices for long running operations in Azure Analysis Services | Microsoft Docs
3+
description: This article describes best practices for long running operations.
4+
author: minewiskan
5+
ms.service: analysis-services
6+
ms.topic: conceptual
7+
ms.date: 04/14/2020
8+
ms.author: owend
9+
10+
---
11+
# Best practices for long running operations
12+
13+
In Azure Analysis Services, a *node* represents a host virtual machine where a server resource is running. Some operations such as long running queries, refresh operations, and query scale-out synchronization can fail if a server resource moves to a different node. Common error messages in this scenario include:
14+
15+
- "An error has occurred while trying to locate a long running XMLA request. The request might have been interrupted by service upgrade or server restart."
16+
- "Job with ID '<guid>for model '<database>' was canceled due to service error (inactivity) with message 'Cancelling the refresh request since it was stuck without any updates. This is an internal service issue. Please resubmit the job or file a ticket to get help if this issue happens repeatedly."
17+
18+
There are many reasons why long running operations can be disrupted. For example, updates in Azure such as:
19+
- Operating System patches
20+
- Security updates
21+
- Azure Analysis Services service updates
22+
- Service Fabric updates. Service Fabric is a platform component used by a number of Microsoft cloud services, including Azure Analysis Services.
23+
24+
Besides updates that occur in the service, there is a natural movement of services across nodes due to load balancing. Node movements are an expected part of a cloud service. Azure Analysis Services tries to minimize impacts from node movements, but it's impossible to eliminate them entirely.
25+
26+
In addition to node movements, there are other failures that can occur. For example, a data source database system might be offline or network connectivity is lost. If during refresh, a partition has 10 million rows and a failure occurs at the 9 millionth row, there is no way to restart refresh at the point of failure. The service has to start again from the beginning.
27+
28+
## Refresh REST API
29+
30+
Service interruptions can be challenging for long running operations like data refresh. Azure Analysis Services includes a REST API to help mitigate negative impacts from service interruptions. To learn more, see [Asynchronous refresh with the REST API](analysis-services-async-refresh.md).
31+
32+
Besides the REST API, there are other approaches you can use to minimize potential issues during long running refresh operations. The main goal is to avoid having to restart the refresh operation from the beginning, and instead perform refreshes in smaller batches that can be committed in stages.
33+
34+
The REST API allows for such restart, but it doesn't allow for full flexibility of partition creation and deletion. If a scenario requires complex data management operations, your solution should include some form of batching in its logic. For example, by using transactions to process data in multiple, separate batches allows for a failure to not require restart from the beginning, but instead from an intermediate checkpoint.
35+
36+
## Scale-out query replicas
37+
38+
Whether using REST or custom logic, client application queries can still return inconsistent or intermediate results while batches are being processed. If consistent data returned by client application queries is required while processing is happening, and model data is in an intermediate state, you can use [scale-out](analysis-services-scale-out.md) with read-only query replicas.
39+
40+
By using read-only query replicas, while refreshes are being performed in batches, client application users can continue to query the old snapshot of data on the read-only replicas. Once refreshes are finished, a Synch operation can be performed to bring the read-only replicas up to date.
41+
42+
43+
## Next steps
44+
45+
[Asynchronous refresh with the REST API](analysis-services-async-refresh.md)
46+
[Azure Analysis Services scale-out](analysis-services-scale-out.md)
47+
[Analysis Services high availability](analysis-services-bcdr.md)
48+
[Retry guidance for Azure services](https://docs.microsoft.com/azure/architecture/best-practices/retry-service-specific)
49+

0 commit comments

Comments
 (0)