//public static IEnumerable<WindowsAzureTableEventEntry> GetEvents(string connectionString, string tableName) //{ // var table = GetTable(connectionString, tableName); // var query = new TableQuery<WindowsAzureTableEventEntry>(); // return table.ExecuteQuery<WindowsAzureTableEventEntry>(query).ToList(); //} public static int GetEventsCount(string connectionString, string tableName) { var table = GetTable(connectionString, tableName); if (!table.Exists()) { return 0; } var query = new TableQuery<WindowsAzureTableEventEntry>(); return table.ExecuteQuery<WindowsAzureTableEventEntry>(query.Select(new List<string>() { "PartitionKey", "RowKey", "EventId" })).Count(); }
/// <summary> /// Gets all table record based on the table name form the azure table storage. /// </summary> /// <param name="tableName">azure table name</param> /// <param name="filter">filter</param> /// <param name="columns">column to select</param> /// <returns></returns> public IEnumerable<DynamicTableEntity> GetTableData( string tableName, string filter = "", IList<string> columns = null) { CloudTable table = getTable(tableName); TableQuery query = new TableQuery(); if (filter != string.Empty) query.FilterString = filter; if (columns != null) query.Select(columns); return table.ExecuteQuery(query); }
public static void TruncateDiagnostics(CloudStorageAccount storageAccount, DateTime startDateTime, DateTime finishDateTime, Func<DateTime, DateTime> stepFunciton, TraceSource traceSource) { var itemsRemoved = 0; try { var cloudTable = storageAccount.CreateCloudTableClient().GetTableReference("WADLogsTable"); var query = new TableQuery(); var dt = startDateTime; var prevDay = dt.Day; var errorsCount = 0; while (true) { dt = stepFunciton(dt); if (dt>finishDateTime) break; if (prevDay!=dt.Day) traceSource.TraceEvent(TraceEventType.Error, 0, string.Format("PLEASE REMOVE TruncateDiagnostics day={0} , removed={1}", dt, itemsRemoved)); prevDay = dt.Day; var l = dt.Ticks; var partitionKey = "0" + l; query.FilterString = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.LessThan, partitionKey); query.Select(new string[] {}); try { var items = cloudTable.ExecuteQuery(query).ToList(); itemsRemoved += items.Count; const int chunkSize = 100; var chunkedList = new List<List<DynamicTableEntity>>(); int index = 0; while (index < items.Count) { var count = items.Count - index > chunkSize ? chunkSize : items.Count - index; chunkedList.Add(items.GetRange(index, count)); index += chunkSize; } foreach (var chunk in chunkedList) { var batches = new Dictionary<string, TableBatchOperation>(); foreach (var entity in chunk) { var tableOperation = TableOperation.Delete(entity); if (batches.ContainsKey(entity.PartitionKey)) batches[entity.PartitionKey].Add(tableOperation); else batches.Add(entity.PartitionKey, new TableBatchOperation { tableOperation }); } foreach (var batch in batches.Values) cloudTable.ExecuteBatch(batch); } errorsCount = 0; } catch (Exception ex) { errorsCount++; traceSource.TraceEvent(TraceEventType.Error, 0, "ERROR ATTEMPT " + errorsCount+" "+ex); if (errorsCount > 10) throw; Thread.Sleep(60 * 100); } } } catch (Exception ex) { traceSource.TraceEvent(TraceEventType.Error, 0, ex.ToString()); } if (itemsRemoved == 0) traceSource.TraceEvent(TraceEventType.Error, 0, "PLEASE REMOVE TruncateDiagnostics"); }