コード例 #1
0
        //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();
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
ファイル: AzureLogHelper.cs プロジェクト: Wdovin/vc-community
		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");
		}