代码之家  ›  专栏  ›  技术社区  ›  gius

Azure SQL审核日志的RowKey模式

  •  0
  • gius  · 技术社区  · 7 年前

    我已将Azure SQL server配置为在存储帐户中存储审核日志。它创建了一个名为 SQLDBAuditLogsMYDBNAME 那很好,我也可以看看表,看看日志。

    问题是,可用过滤只能应用于PartitionKey和RowKey(而不是时间戳,这正是我所需要的)。PartitionKey包含服务器和数据库名称,因此没有帮助。然而,行键是按特定顺序排列的,似乎与时间戳有关(星号后的第二部分是GUID)。不幸的是,我无法找出如何根据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 然后将其视为滴答声等等),但没有成功。

    您能找到一种从日期范围中获得适当行键范围的方法吗?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Joey Cai    7 年前

    您能找到一种从日期范围中获得适当行键范围的方法吗?

    关系是: DateTime.MaxValue-TimeStamp=Rowkey

    因为时间戳是一个除数,所以时间戳中会忽略一些毫秒。所以,你可以使用DateTime。MaxValue行键实现模糊查询。 以下代码使用您提供的第一组数据。

    var ticks = DateTime.MaxValue.Ticks - 2519102033993698531;
    DateTime datetime = new DateTime(ticks);
    Console.WriteLine(datetime.ToString());
    

    屏幕截图:

    enter image description here

    这与时间戳几乎相同。或者你可以用这个 link 检查将记号转换为日期时间的结果。

    问题是,可用过滤只能应用于PartitionKey和RowKey(而不是时间戳,这正是我所需要的)。

    然而,正如您所提到的,您认为只能使用PartitionKey和RowKey过滤表存储。

    就我所知 您还可以使用时间戳过滤表存储 。有关如何筛选的详细信息,请参阅 case

    推荐文章