我有一个业务用户正在迁移到 Snowflake,该用户有许多使用 MS Access 链接表的 MS Access 报告流程,他正尝试通过 ODBC 连接重定向到 Snowflake。如果他的 ODBC 连接指定了一个数据库,他就可以看到链接表的内容。如果他尝试链接不同数据库中的表,MS Access 可以在对象列表中找到该表,但无法打开它。这就像查找表的过程正在使用完整的数据字典,但是当您尝试链接它时,它会形成一个缺少数据库限定符的查询。
我们已尝试了大多数包含或省略 ODBC 连接属性(包括数据库)条目的限定。我们可以想到两种解决方法,但这两种方法都不理想,因为用户社区庞大,而且报告复杂而庞大。两种备份选项是为每个数据库创建单独的驱动程序或在可访问的同一数据库下的 Snowflake 中创建视图。
还有其他人遇到过这个问题并且知道更好的解决方案吗?它是 Snowflake 的 ODBC 驱动程序版本吗(我认为这是最新的,因为用户遵循了我们 IT 部门创建的一组预设的下载说明)。
必须更改此设置才能添加链接表,如果已经设置了链接表则不需要。
通过 ODBC 添加链接表时,Snowflake 中的默认
CLIENT_METADATA_REQUEST_USE_CONNECTION_CTX=false
选项会在 Microsoft Access 中产生奇怪的行为。
首先,可供选择的表列表似乎包含用户可以访问的每个数据库,但没有数据库名称。如果不同数据库中有两个表具有相同的架构和表名,则在添加表时会出现一个对话框,说明字段不能添加多次。
默认情况下,不使用任何连接上下文设置 ODBC 连接,尽管在 ODBC 设置过程中向数据库和架构字段添加了内容。
要纠正此问题,请将 CLIENT_METADATA_REQUEST_USE_CONNECTION_CTX 选项设置为 true:
ALTER USER "MYNAME" SET CLIENT_METADATA_REQUEST_USE_CONNECTION_CTX=true;