【问题标题】:Sending Correlation ID from Code to SQL Server将关联 ID 从代码发送到 SQL Server
【发布时间】:2020-02-15 00:14:55
【问题描述】:

有没有办法在命令级别将关联 ID 从 C# 代码发送到 SQL Server? 例如,使用x-correlation-id 是一种可接受的方式来跟踪系统所有部分的请求。我们正在寻找一种方法将此字符串值传递给 SQL Server 中的存储过程调用。 我花了一些时间阅读文档和帖子,但我找不到任何有用的东西。 有人可以告诉我是否有办法做到这一点?目标是能够通过所有服务(我们现在可以)和数据库调用(我们不能并寻找解决方案)跟踪特定调用。

【问题讨论】:

  • 我不确定你想通过将x-correlation-id 传递给存储过程来实现什么。但是对于跟踪部分,您应该在应用程序中有适当的日志记录或分析,它可以告诉您在哪个x-correlation-id 的上下文中调用了哪个存储过程。我认为您不需要在 SQL 服务器命令级别对其进行跟踪。
  • 在微服务架构环境中,追踪事物到所到之处非常有帮助。甚至实体框架也有标记的概念,在运行脚本中显示为注释。当您拥有一个在一小时内运行数百万笔交易的实时环境,并且您以这样一种方式构建它时,您可以标记一个特定的操作,它让您可以看到它进入系统内部的任何地方,除了数据库,那么恕我直言,有些东西丢失了.我们可以对除了数据库之外的所有东西进行分析。我认为 MS 需要将其添加到 SQL Server。

标签: c# sql-server stored-procedures tracking cross-correlation


【解决方案1】:

我知道这里的答案是一年后。但以防万一,有人有同样的问题。

从 EF 核心 2.2 开始,MS 提供了一种名为“TagWith()”的新方法,您可以将自己的注释与 EF 查询一起传递到 SQL 服务器。通过这种方式,您可以使用 C# 代码中生成的相同关联 ID 轻松跟踪 SQL 查询。 https://docs.microsoft.com/en-us/ef/core/querying/tags

不幸的是,EF 6 中没有这个新功能。但这种情况不仅是我们。如果您只需要一个简单的解决方案,您可以查看线程hereMS documents

如果您需要更稳定的解决方案,您也可以查看this NuGet plugin 以获取 EF 6。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    相关资源
    最近更新 更多