将数据保存到 Kusto DB

Saving data to Kusto DB

我在将数据从 C# 代码保存到 Kusto Db 时遇到问题。我是 运行 以下代码,我在 ExecuteControlCommand 中遇到错误。任何人都可以帮助解决这个问题。我尝试了所有选项,但仍然没有成功

public static void LogMessage(string message)
        {
            var clusterName = "ABC";
            var db = "Kusto";
            var table = "Log";
            var mappingName = "KustoJsonMapping";

            // Set up table
            var kcsbEngine =
                new KustoConnectionStringBuilder($"https://KustoDB.kusto.windows.net");

            using (var kustoAdminClient = KustoClientFactory.CreateCslAdminProvider(kcsbEngine))
            {
                var columns = new List<Tuple<string, string>>()
        {
            new Tuple<string, string>("logId", "System.String"),
            new Tuple<string, string>("logDtm", "System.DateTime"),
            new Tuple<string, string>("userName", "System.String"),
        };

                var command = CslCommandGenerator.GenerateTableCreateCommand(table, columns);
                kustoAdminClient.ExecuteControlCommand(databaseName: db, command: command);

                // Set up mapping
                var columnMappings = new List<JsonColumnMapping>();
                columnMappings.Add(new JsonColumnMapping()
                { ColumnName = "logId", JsonPath = "$.Id" });
                columnMappings.Add(new JsonColumnMapping()
                { ColumnName = "logDtm", JsonPath = "$.Timestamp" });
                columnMappings.Add(new JsonColumnMapping()
                { ColumnName = "userName", JsonPath = "$.Message" });

                command = CslCommandGenerator.GenerateTableJsonMappingCreateCommand(
                                                    table, mappingName, columnMappings);
                kustoAdminClient.ExecuteControlCommand(databaseName: db, command: command);
            }

            }
        }

应用程序是否具有 table 所需的权限?您评论中的错误消息表明它没有。

您可以使用提到的控制命令授予它权限here

或者,使用 Kusto.Explorer,如果您安装了它。

所需权限为 TableIngestor(已解释 here and here

授予您的应用程序权限后,您还需要向集群出示凭据。