.NET 6 C# 尝试连接到 Snowflake 数据库时超时

问题描述 投票:0回答:2

每次我尝试使用

Snowflake.Data
NuGet 包连接到 .NET 6 中的雪花数据库时,我都会在 120 秒后超时。我已经使用连接字符串中的所有正确凭据以及所有不正确的凭据进行了尝试。不管怎样,反应都是一样的:

[2022-06-26T21:05:06.742Z] Snowflake.Data.Client.SnowflakeDbException (0x80004005): Error: Snowflake Internal Error: Unable to connect SqlState: 08006, VendorCode: 270001, QueryId:
[2022-06-26T21:05:06.743Z]  ---> System.AggregateException: One or more errors occurred. (Error: Request reach its timeout. SqlState: , VendorCode: 270007, QueryId: )

我的代码设置如下所示:

using (var conn = new SnowflakeDbConnection())
            {
                conn.ConnectionString = @"
                    ACCOUNT=<account>;
                    USER=<user>;
                    PASSWORD=<password>;
                    ROLE=<role>;
                    DB=<db>;
                    WAREHOUSE=<warehouse>";

                _log.Information("Attempting connection to Snowflake...");
                await conn.OpenAsync();
...

每次尝试打开连接后,它都会挂起 120 秒,然后产生上述错误。我尝试过异步和非异步以及一堆不同的连接字符串属性。我还验证了我能够使用常规

SqlConnection
建立与另一个数据库的出站连接,并且没有任何问题。不知道会出什么问题。

还按照文档中所述运行了Snowcd连接诊断工具,结果全部通过:

c# connection snowflake-cloud-data-platform .net-6.0 snowflake-connector
2个回答
3
投票

经过多次尝试和错误,将特定的

HOST
值添加到连接字符串中才为我解决了这个问题。为
ACCOUNT
值指定完整帐户和区域不起作用。仅当在
HOST
下完成时。尽管 GitHub 文档指出
HOST
不是必需的,但使用区域指定它是唯一可以防止我超时的方法。


0
投票

我在linux下也遇到了同样的问题。即使我指定了

conn.ConnectionString = "password=xxx;account=xxx;user=xxx;db=xxx;warehouse=xxx;role=xxx;host=xxx;region=xxx";

它仍然抛出“未处理的异常。Snowflake.Data.Client.SnowflakeDbException(0x80004005):错误:Snowflake内部错误:无法连接。发生一个或多个错误。(任务被取消。)SqlState:08006,VendorCode:270001, QueryId:”,在windows下连接成功。您能给我一些建议吗? C# Snowflake.Data Nuget 在 linux 下连接失败,在 windows 下成功 非常感谢

© www.soinside.com 2019 - 2024. All rights reserved.