1

我在将数据从 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);
            }

            }
        }
4

2 回答 2

0

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

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

或者,使用Kusto.Explorer(如果已安装)。

所需的权限是TableIngestor(解释herehere

于 2019-01-16T21:42:58.787 回答
0

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

于 2020-01-22T19:03:28.523 回答