C# 从视图进行数据访问

C# 从视图进行数据访问,c#,snowflake-cloud-data-platform,C#,Snowflake Cloud Data Platform,我们有一个雪花视图,可以使用浏览器进行查询 但是,当使用C#代码查询同一查询时,它将挂起 using (var connection = new SnowflakeDbConnection()) { connection.ConnectionString = "ConnectionString"; connection.Open(); // Works var sqlQue

我们有一个雪花视图,可以使用浏览器进行查询

但是,当使用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个条目


我在这里遗漏了什么?

所以绞刑可能是由多种原因造成的。如果没有日志记录,我无法告诉您出了什么问题。这是自述文件,最后一节有一个如何启用日志的示例

不看日志,我只能猜测绞死的原因。一种猜测是您没有访问S3的权限。当结果集很大时(在您的案例中为25000个条目),雪花服务器将结果集写入S3/Azure Blob,客户端将从S3/Azure Blob下载结果。如果您的网络没有访问S3/Azure Blob的权限,那么它将挂起


但同样,这只是纯粹的猜测。确切地说,您最好的选择是启用日志记录以查看发生了什么。

您可能有一个复杂的查询,需要花费大量时间来处理。是的,我可以查看sqlQuery吗?或者尝试运行一个简单的get date查询。另外,我从未使用过此数据库,但查看Microsoft的Sql命令类示例,他们跳过了if语句,还尝试将Command.CommandType设置为默认值以外的值。