따라서 Microsoft는 Azure 테이블 저장소에 진단 데이터를 보내기로 결정했습니다. 이 저장소를 쿼리하고 C# SDK를 통해 분석을 위해 다른 위치로 보내려고합니다. 수십만의 레코드를 가져 와서 쿼리 할 수는 있지만 마지막으로 보낸 연속 토큰은 항상 null 응답을 받게됩니다. 더 많은 데이터가 테이블 스토리지로 보내지더라도, 연속 토큰이 작동하지 않고 여전히 Null 연속 토큰과 Null 데이터를 가져옵니다.Azure 테이블 보관 계속
누구나 이와 같은 작업을 했습니까? 계속 토큰을 보내는 경우 Azure 테이블 데이터를 "동기화"하는 방법을 계속 유지하려면 어떻게해야합니까?
public static List<PerfMonEntity> GetEventData(ref TableContinuationToken contToken)
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"]);
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
CloudTable eventLogsTable = tableClient.GetTableReference("WADPerformanceCountersTable");
TableQuery<PerfMonEntity> query = new TableQuery<PerfMonEntity>();
var l = new List<PerfMonEntity>();
var segment = eventLogsTable.ExecuteQuerySegmented(query, contToken ?? new TableContinuationToken());
foreach (PerfMonEntity wadCounter in segment)
{
l.Add(wadCounter);
}
contToken = segment.ContinuationToken;
if (contToken == null)
{
Console.WriteLine("contToken is NULL!");
return null;
}
Console.WriteLine("partkey: {0}", contToken.NextPartitionKey ?? "");
Console.WriteLine("rowkey: {0}", contToken.NextRowKey ?? "");
return l;
}
- = - = - = - = - = - 반환 할 데이터가 더 이상 없을 때
while (num < loop)
{
List<PerfMonEntity> eleList = AzurePerfTable.GetEventData(ref contToken);
if (eleList != null)
returnedList.AddRange(eleList);
else
num = loop;
num += 1;
if (contToken != null)
AZContinuationToken.SetContToken(contToken);
Console.WriteLine("returnedlistsize: {0}", returnedList.Count<PerfMonEntity>());
}
구입 :
는이 라인을 따라 로직을 작성하려고? (예 :'꼬리 -f' 행동?) – ChrisF게임에서 늦었지만 다음과 같이'BlobContinuationToken'의 새 인스턴스를 만들 수 있습니다 :'BlobContinuationToken token = new BlobContinuationToken() {NextMarker = "[long_continuation_token_goes_here] "};'. 그 시점에서 요청이 시작되고 계속됩니다. –