Microsoft Access 的雪花连接字符串

Posted

技术标签:

【中文标题】Microsoft Access 的雪花连接字符串【英文标题】:Snowflake Connection String for Microsoft Access 【发布时间】:2021-10-25 20:05:18 【问题描述】:

我的公司正在从 Oracle 的“本地”数据仓库切换到 Snowflake 云存储。

我支持许多 Microsoft Access 应用程序使用 pass-through 查询,这些查询在连接字符串属性中使用简单字符串。一旦用户下载了适当的 Oracle Admin (X64) 客户端,他们就开始营业了。

有了雪花,客户端软件也是简单的下载。然而,我被困住了,让连接字符串工作。这是我目前所在的位置:

ODBC;DRIVER=SnowflakeDSIIDriver;SERVER=xxxx.us-east-1.privatelink.snowflakecomputing.com;UID=xxx@xxx.com;PWD=xxx;WH=XYZ;DATABASE=XYZ;ROLE=XYZ

(此字符串返回错误:ODBC--调用失败。当前会话中未选择活动仓库。使用“使用仓库”命令选择活动仓库。(#606))

是否有人成功地将 Microsoft Access Pass-through 查询连接到 Snowflake 并检索结果?

(请注意,验证器不是外部浏览器)

(MS Access 365 for Enterprise,64 位)

【问题讨论】:

您必须获取一些示例工作连接字符串。您还必须确定他们提供的驱动程序是否支持 ODBC - 他们可能不支持。 谢谢阿尔伯特,这就是我问这个问题的原因。在我一周的搜索中,我没有找到可以提供工作示例连接字符串的任何人。我已经安装了有效的 ODBC(因为我可以使用它通过浏览器或 DBeaver 连接到 Snowflake)。 您是在控制面板中使用 x32 位 odbc 配置,还是 x64 位配置?您想为 odbc 配置面板使用 x32 位版本。还以 adim 身份启动该配置面板,并创建用户或系统 DSN。由于某些奇怪的原因,许多 ODBC 连接器设置不适用于文件 DSN。但始终以管理员权限启动 odbc 配置。 (右键单击 - 以管理员身份运行)。如前所述,请确保启动 odbc 的 x32 位版本(假设访问 x32)。 所以,我使用的是 64 但 office,目前使用的是 64 位 odbc。我正在使用具有适当配置的用户 DSN。 @JimT ODBC connection string to Snowflake for Access Pass Thru Query 【参考方案1】:

Optional Connection Parameters

仓库(仓库)

指定用于驱动程序启动的会话的默认仓库。

WH=XYZ; 应该是WAREHOUSE=XYZ;

【讨论】:

感谢 Lukasz - 该链接看起来可能会提供一些答案。不幸的是,将 WH 更改为 WAREHOUSE 不起作用;同样的错误。 @JimT XYZ 是否区分大小写? WAREHOUSE="XYZ"; 我不这么认为,两种方法我都试过了。 @JimT 然后最后一次尝试:ALTER USER <user_name> SET DEFAULT_WAREHOUSE=XYZ; 并从连接字符串中跳过 WAREHOUSE 部分【参考方案2】:

好的,对于那些可能感兴趣的人,以下适用于传递查询连接字符串属性:

ODBC;
driver=SnowflakeDSIIDriver;
server=xxxxxxxxx.xx-xxxx-x.xxxxxxxxxx.snowflakecomputing.com;
database=xxxxxxxxxx;
warehouse=xxxxxxxxxxxxxxxx;
role=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;
Uid=xxxxxxxxxxx@xxxxxxx.com;
Pwd=xxxxxxxxx;

【讨论】:

以上是关于Microsoft Access 的雪花连接字符串的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft Access ODBC 连接:连接字符串差异

Microsoft Access 2007 连接

Microsoft Access SQL 查询中的字符串连接问题

microsoft access 2010 .accdb 的 SQL 连接字符串

Microsoft Access ODBC 连接字符串限制为 255 个字符?

[Access][Microsoft][ODBC 驱动程序管理器] 无效的字符串或缓冲区长度 Invalid string or buffer length