Microsoft SQL Server 2017 Data Tools 15.9.2版SSIS通过ODBC驱动连接Snowflake后无法显示全部模式及表问题求助
解决SSIS 2017 Data Tools 15.9.2无法查看Snowflake全部模式/表的问题
我之前帮不少用户排查过这个问题,结合Snowflake官方文档和实际调试经验,整理了几个靠谱的解决思路,你可以逐一尝试:
1. 升级Snowflake ODBC驱动到最新兼容版本
SSIS 15.9.2对ODBC驱动的兼容性要求比旧版SSIS更高,旧驱动可能无法正确返回完整的元数据:
- 卸载当前的Snowflake ODBC驱动,下载对应系统位数的最新稳定版驱动(注意SSIS设计器默认用32位驱动,部署时可能需要64位,建议两个都装)。
- 重新配置ODBC数据源,测试连接确认正常后,再回到SSIS里刷新元数据试试。
2. 调整ODBC连接管理器的参数设置
打开Snowflake ODBC连接管理器的「All」标签页,修改几个关键参数:
- 明确指定
Database和Warehouse的值,避免连接时默认到权限不足的资源池。 - 把
USE_CACHED_METADATA设置为false,强制SSIS实时从Snowflake读取元数据,而不是依赖本地缓存。 - 如果知道具体要访问的Schema,也可以手动指定
Schema参数,先验证单个Schema的表是否能正常显示。
3. 修改SSIS设计器的元数据加载配置
有时候是SSIS设计器的加载限制导致部分元数据没显示:
- 点击顶部菜单栏的「工具」→「选项」→「Business Intelligence Designers」→「Integration Services Designers」。
- 找到元数据加载相关的设置,尝试增加超时时间(比如从默认的30秒改成60秒),避免网络延迟导致加载中断。
- 检查是否有「加载所有可用元数据」的选项,勾选它确保SSIS不会过滤掉任何Schema或表。
4. 手动通过SQL查询获取元数据
如果自动加载还是不行,可以绕过SSIS的元数据读取逻辑,直接用SQL查询获取:
- 在Snowflake客户端执行以下SQL获取所有Schema:
SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE CATALOG_NAME = '你的数据库名称'; - 获取指定Schema下的所有表:
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '目标Schema名称' AND TABLE_CATALOG = '你的数据库名称'; - 在SSIS里用「执行SQL任务」运行这些查询,把结果存储到变量里,后续流程就可以基于这些变量来访问对应的表了。
5. 确认Snowflake用户的权限配置
有时候不是SSIS的问题,而是连接Snowflake的用户权限不足,导致看不到全部Schema/表:
- 给用户对应的角色授予数据库使用权限:
GRANT USAGE ON DATABASE 你的数据库名称 TO ROLE 你的角色名称; - 授予所有Schema的使用权限:
GRANT USAGE ON ALL SCHEMAS IN DATABASE 你的数据库名称 TO ROLE 你的角色名称; - 如果需要访问表,还要授予查询权限:
GRANT SELECT ON ALL TABLES IN SCHEMA 你的数据库名称.目标Schema名称 TO ROLE 你的角色名称;
(如果要让未来新增的对象也能被访问,把ALL替换成FUTURE)
内容的提问来源于stack exchange,提问作者shwetank agrawal
相关产品推荐
相关产品推荐

