PDI 7.1/8.0无法连接SQL Server仓库,PDI4.4可正常使用求助
解决PDI 7.1/8.0无法连接SQL Server仓库的问题
我之前碰到过好几个从PDI 4.x迁移到7.x/8.x时遇到的仓库连接问题,你的情况核心原因是PDI从5.x版本开始,官方不再默认支持SQL Server作为仓库数据库——虽然数据库连接能正常建立,但仓库的Schema校验和功能支持被限制了。下面是具体的解决步骤:
一、先明确核心限制
PDI 7.1/8.0的官方文档里,仓库数据库仅支持PostgreSQL、MySQL、Oracle、DB2这几个主流数据库,SQL Server被移除了官方支持列表。但这不代表完全不能用,只是需要手动配置和升级Schema。
二、具体解决步骤
1. 升级SQL Server JDBC驱动
PDI新版本自带的SQL Server驱动可能和你的数据库版本不兼容,先更新驱动:
- 下载对应SQL Server版本的JDBC驱动(比如微软官方的
sqljdbc42.jar或更高版本,或者jTDS驱动) - 把驱动文件放到PDI安装目录的
data-integration/lib文件夹下 - 重启Spoon,确保驱动被正确加载
2. 手动配置Generic仓库连接
不要直接选SQL Server类型,改用Generic数据库类型来配置仓库:
- 打开Repository Manager,点击
Add选择Database Repository - 在数据库类型下拉框里选Generic database
- 手动填写JDBC参数:
- JDBC URL:根据驱动填写,比如微软驱动用
jdbc:sqlserver://你的服务器IP:端口;databaseName=你的仓库数据库名,jTDS用jdbc:jtds:sqlserver://你的服务器IP:端口/你的仓库数据库名 - Driver Class:微软驱动填
com.microsoft.sqlserver.jdbc.SQLServerDriver,jTDS填net.sourceforge.jtds.jdbc.Driver - 填入仓库数据库的用户名和密码,测试连接(此时应该能成功)
- JDBC URL:根据驱动填写,比如微软驱动用
- 完成仓库的命名和其他配置后点击保存
3. 升级仓库Schema(关键步骤)
PDI 4.4的仓库Schema和7.x/8.x差异很大,必须升级:
- 先备份! 先把原仓库数据库做完整备份,同时用PDI 4.4把所有Jobs和Transformations导出为XML文件,做双重保险
- 打开新版本PDI的
data-integration/sql/repository目录,找到SQL Server对应的升级脚本(比如从4.4升到7.1,需要依次执行Repository_SQLServer_4.0_to_5.0.sql、Repository_SQLServer_5.0_to_6.0.sql、Repository_SQLServer_6.0_to_7.0.sql这类脚本) - 用SQL Server Management Studio连接仓库数据库,依次执行这些升级脚本,确保没有报错
- 执行完后,再尝试连接仓库
4. 检查数据库权限
新版本PDI仓库需要更多的数据库权限,确保你的仓库账号拥有:
- 对所有仓库表的
SELECT、INSERT、UPDATE、DELETE权限 - 执行存储过程的权限
- 创建临时表的权限
三、额外注意事项
- 如果SQL Server数据库开启了大小写敏感,要确保仓库表名和字段名的大小写和PDI要求一致
- 检查SQL Server的数据库隔离级别,必须设置为
READ COMMITTED或更高(默认一般是这个,但最好确认) - 如果升级脚本执行报错,先检查脚本里的语法是否适配你的SQL Server版本,比如有些语法在SQL Server 2016和2008里有差异,可能需要微调脚本
内容的提问来源于stack exchange,提问作者Daniel Augusto da Costa Ambrsi
相关产品推荐
相关产品推荐

