Шаблон RowKey журналов аудита SQL Azure
Я настроил SQL-сервер Azure для хранения журналов аудита в учетной записи хранения. Он создал таблицу под названием SQLDBAuditLogsMYDBNAME
, Это хорошо, и я также могу заглянуть в таблицу и посмотреть журналы.
Проблема в том, что полезную фильтрацию можно применять только к PartitionKey и RowKey (не Timestamp, что мне и нужно). PartitionKey содержит имя сервера и базы данных, поэтому это не поможет. Однако RowKeys расположены в определенном порядке, и, похоже, это связано с меткой времени (вторая часть после звездочки - GUID). К сожалению, я не могу узнать, как угадать RowKey на основе DateTime.
Вы можете увидеть три пары значений здесь:
| Timestamp | RowKey |
| 2017-04-13T15:30:00.630Z | 2519102033993698531*7588f70d-0b4e-49... |
| 2017-04-13T16:15:00.615Z | 2519102006993841015*1667d291-bbef-40... |
| 2017-04-13T17:15:01.255Z | 2519101970987444854*6f4dca8f-e81a-4a... |
Как видите, числа в порядке убывания.
Я пробовал много комбинаций (например, вычесть число из long.MaxValue
а потом принимайте это как галочки и тд) но безуспешно.
Можете ли вы увидеть способ получить правильный диапазон RowKey из диапазона дат?
1 ответ
Можете ли вы увидеть способ получить правильный диапазон RowKey из диапазона дат?
Отношения это: DateTime.MaxValue-TimeStamp=Rowkey
Поскольку TimeStamp является делителем, некоторые миллисекунды игнорируются в TimeStamp. Таким образом, вы можете использовать DateTime.MaxValue-RowKey для выполнения нечеткого запроса. Следующий код использует первые данные группы, которые вы предоставили.
var ticks = DateTime.MaxValue.Ticks - 2519102033993698531;
DateTime datetime = new DateTime(ticks);
Console.WriteLine(datetime.ToString());
Снимок экрана:
Это почти то же самое с TimeStamp. Или вы можете использовать эту ссылку, чтобы проверить, каков результат, который конвертирует отметки в datetime.
Проблема в том, что полезную фильтрацию можно применять только к PartitionKey и RowKey (не Timestamp, что мне и нужно).
Однако, как вы упомянули, вы думаете, что можете фильтровать хранилище таблиц только с помощью PartitionKey и RowKey.
AFAIK, вы также можете использовать TimeStamp для фильтрации хранения таблицы. Для получения более подробной информации о том, как фильтровать, вы можете обратиться к этому делу.