Доступ к данным из представления висит - PullRequest
0 голосов
/ 02 апреля 2019

У нас есть вид снежинки, который можно запросить с помощью браузера.

Однако, когда тот же запрос запрашивается с использованием кода C #, он зависает.

using (var connection = new SnowflakeDbConnection())
            {
                connection.ConnectionString = "ConnectionString";

                connection.Open(); // Works

                var sqlQuery = "select \"Col1\", \"Col2\", \"Col3\", \"Col3\", \"Col5\", \"Col6\" from \"View1\";
                var command = new SnowflakeDbCommand(connection);
                command.CommandText = sqlQuery;
                command.CommandTimeout = 240;
                using (var reader = command.ExecuteReader()) // Works
                {
                    if (reader.HasRows) // Works and is true
                    {
                        while (reader.Read()) // Hangs here
                        {

                        }
                    }
                }

Строка подключения содержит учетную запись, пользователь, пароль, дБ, схема, роль и хост.

Представление содержит около 25000 записей.

Что мне здесь не хватает?

1 Ответ

1 голос
/ 04 апреля 2019

Так что зависание может быть вызвано несколькими причинами.Я не могу сказать вам, что идет не так, без регистрации.Вот README, и в последнем разделе приведен пример включения ведения журнала.https://github.com/snowflakedb/snowflake-connector-net/blob/master/README.md

Без чтения логов я могу только догадываться о причине зависания.Можно предположить, что у вас нет доступа к S3.Если набор результатов большой (в вашем случае это 25000 записей), сервер Snowflake запишет набор результатов в S3 / Azure Blob, а клиент загрузит результат из S3 / Azure Blob.Если ваша сеть не имеет доступа к S3 / Azure Blob, она зависнет.

Но, опять же, это всего лишь догадка.Точная причина заключается в том, что лучше всего включить регистрацию, чтобы увидеть, что происходит.

...