Pentaho Kettle:无法连接到MS SQL Server Express

时间:2018-02-02 11:37:12

标签: sql-server jdbc pentaho kettle

我在本地计算机上运行Microsoft SQL Server 2014 Express,即Windows 7 PC。

我使用Python并且可以使用SQL炼金术连接到服务器(来自同一台PC)而没有任何问题。我也可以使用Excel和PowerPivot插件进行连接。

然而,我无法与Pentaho - Kettle联系。

  • 我从Microsoft下载了JDBC驱动程序: https://www.microsoft.com/en-gb/download/details.aspx?id=11774
  • 我把文件jre8 \ sqljdbc42.jar移到lib子文件夹中 Pentaho数据集成安装。我把文件放在jre8中,而不是jre7,因为我的Java是JRE1.8.0_144
    • 然后我将文件放在auth \ x86 \ sqljdbc_auth.dll中并将其复制到同一个lib文件夹中。我使用的是x86文件,而不是x64,因为Java位于c:\ Program Files中 (86)\爪哇\ jre1.8.0_144 \
    • 我添加'表输入'并设置连接类型= MS SQL Server(本机)和Access = Native(JDBC)

我得到的错误信息是:

Error connecting to database [mydatabase] :org.pentaho.di.core.exception.KettleDatabaseException:  Error occurred while trying to connect to the database

Error connecting to database: (using class com.microsoft.sqlserver.jdbc.SQLServerDriver) The TCP/IP connection to the host localhost, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".


org.pentaho.di.core.exception.KettleDatabaseException:  Error occurred while trying to connect to the database

Error connecting to database: (using class com.microsoft.sqlserver.jdbc.SQLServerDriver) The TCP/IP connection to the host localhost, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".

我尝试了各种组合,指定端口号1433并将其留空,使用集成安全性和手动输入密码,将主机名设置为localhost和DESKTOP-MYNAME \ SQLEXPRESS,但无效。< / p>

思考?建议?谢谢!

我已经阅读了很多关于它的讨论,但似乎没有相关内容; SQL服务器接受传入连接,例如来自Python和SQL Alchemy。

2 个答案:

答案 0 :(得分:2)

我运行了SQL Server 2014配置管理器,并检查了:

SQL Server网络配置 - &gt; SQLEXPRESS的协议 - &gt; TCP / IP

在协议选项卡中,我有:启用:是,全部收听:是

在“IP地址”标签中,在底部的IPAll下,“TCP动态端口”设置为49178 。 (不知道为什么)。

所以我将Pentaho的'table input'设置中的端口设置为49178 。它设法找到服务器,但是有关集成安全性的错误。所以我将sqljdbc_auth.dll复制到C:\ Program Files(x86)\ Java \ jre1.8.0_144的bin和lib子文件夹....现在它可以工作了!

如果我没有指定端口,Pentaho会尝试端口1433,但它不起作用。

作为参考,我使用Python和SQL Alchemy的连接字符串没有明确指定端口。

params = '?driver=SQL+Server+Native+Client+11.0'
engine = create_engine('mssql+pyodbc://' + ServerName + '/'+ Database + params, encoding ='latin1' )
conn=engine.connect()

答案 1 :(得分:0)

SQL Server网络配置-> SQLEXPRESS的协议-> TCP / IP

在“协议”标签中,我具有:已启用:是和全部收听:是

在“ IP地址”标签的底部IPAll下,“ TCP动态端口”设置为49178。

因此,我将Pentaho的“表输入”设置中的端口设置为49717。

这对我也有用。