pentaho 本地和远程连接到 sql server

Posted

技术标签:

【中文标题】pentaho 本地和远程连接到 sql server【英文标题】:pentaho local and remote connection to sql server 【发布时间】:2013-08-20 16:51:05 【问题描述】:

这让我很头疼。 我刚刚在笔记本电脑上设置了 pentaho 社区版。按照企业版getting_started_with_pentaho附带的pdf文档中的说明,我能够连接到xampp中的mysql服务器。我完美连接到 mysql 数据库。 但是,我还需要在本地和远程都连接到 sql 服务器(mssql),但是按照与 mysql 数据库相同的过程是行不通的。 这就是我所做的: 我安装了SQLServer2008R2SP1-KB2528583-x64-ENU.exe sql server 并使用以下输入成功登录

server type: database engine
server name: ME-PC\SQLEXPRESS
authentication: windows authentication
login: ME-PC\ME
password:

现在我从 here 下载了 mssql 的 jdbc 驱动程序并将文件夹解压缩到我的桌面。该文件夹包含sqljdbc4.jarsqljdbc.jar 以及sqljdbc_auth.dll 的x64 和x86 版本。

我正在运行 x64 操作系统,但我安装的 jdk 进入了 Programfiles(x86),所以我猜我安装的 java 是用于 x86 的。由于这个原因,我将sqljdbc4.jar 和x86 版本的sqljdbc_auth.dll 复制到了目录中:

C:\Users\ELRAPHA\Desktop\PENTAHO\biserver-ce\tomcat\webapps\pentaho\WEB-INF\lib

C:\Users\ELRAPHA\Desktop\PENTAHO\administration-console\jdbc

C:\Users\ELRAPHA\Desktop\PENTAHO\data-integration\libext\JDBC

我还在本地 sql 服务器上启用了 TCI/IP。

正如我所提到的,我能够通过管理工作室连接到 sql server,但是当我尝试通过 web 浏览器中的 pentaho 创建一个新连接时,使用以下内容

hostname: localhost
database name: master
instance name: ME-PC\SQLEXPRESS
port: 1433
username: ME-PC\ME
password: 

我得到了错误

连接数据库时出错 [mssqllocal] org.pentaho.di.core.exception.KettleDatabaseException: 尝试连接数据库时出错

连接数据库时出错:(使用 com.microsoft.sqlserver.JDBC.SqlServerDriver 类) 与主机 localhost 端口 1433 的 TCP/IP 连接失败。 错误:连接被拒绝:连接。

我不明白做错了什么,特别是因为 mysql 是直截了当的。一整天都在这。我需要帮助 。请任何人都可以看到我的错误或这里缺少的东西吗?帮助

【问题讨论】:

【参考方案1】:

如果您想通过 Windows 身份验证通过 JDBC 连接到 SQL Server,则 sqljdbc_auth.dll 必须位于正确的位置。在我的系统(x86)上,这与 sqljdbc4 驱动程序的安装目录相关。 “将文件夹解压缩到我的桌面” 我假设您的意思是您运行了安装程序,并且您可以在此处选择驱动程序的位置。例如在我的系统上,这个文件不在 Pentaho 文件夹中,它在:

C:\Program Files\Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_4.0\enu\auth\x86

我会确保 sqljdbc_auth.dll 的 32 位和 64 位版本都在各自的位置,因为您似乎有一个混合系统。

或者,您可以使用更简单但不与 AD 等集成的 SQL Server 身份验证。

编辑:

糟糕,我忘记了一件很重要的事情。 JVM 必须知道 sqljdbc_auth.dll 的位置。我必须在 Spoon.bat 中将该 dll 的路径添加到 %LIBSPATH%(我只使用 PDI)。

所以基本上我在批处理文件中更改了这段代码:

:USE32
REM ===========================================
REM Using 32bit Java, so include 32bit SWT Jar
REM ===========================================
set LIBSPATH=libswt\win32
GOTO :CONTINUE
:USE64
REM ===========================================
REM Using 64bit java, so include 64bit SWT Jar
REM ===========================================
set LIBSPATH=libswt\win64
set SWTJAR=..\libswt\win64

到这里:

:USE32
REM ===========================================
REM Using 32bit Java, so include 32bit SWT Jar
REM ===========================================
set LIBSPATH=libswt\win32;C:\PROGRA~1\MICROS~1.0FO\sqljdbc_4.0\enu\auth\x86
GOTO :CONTINUE
:USE64
REM ===========================================
REM Using 64bit java, so include 64bit SWT Jar
REM ===========================================
set LIBSPATH=libswt\win64
set SWTJAR=..\libswt\win64

注意缩短的路径名。在你的情况下,我也会为 64 位库添加一个条目,因为你有一个混合环境。

基本上,无论您正在启动什么使用 sqljdbc 驱动程序的程序,您都必须将 sqljdbc_auth.dll 的路径添加到 Java 库路径(即-Djava.library.path=%LIBSPATH%)。之后,我的 PDI 实例可以毫无问题地通过 Windows 身份验证连接到 SQL Server。我不使用 BI_Server 或 Admin Console,但我怀疑你会遇到同样的问题。

注意,我没有使用 SQLEXPRESS 或混合 32 位 JVM/64 位操作系统环境的经验。那里也可能有问题,但如果你想在 SQL Server 中使用 Windows 身份验证,你至少必须处理库路径问题。

【讨论】:

这不是问题中的实际问题。 @Brian.D.Myers 实际上我认为将 sqljdbc4.dll 放入相应的目录而不是修改 bat 文件会更好。但是我认为问题出在我的本地服务器上,因为我能够连接到远程 sql 服务器。问题是本地的。该错误似乎与 TCP/IP 有关。但我已经在本地启用它,所以我坚持要做什么 我对您可以连接到什么以及通过什么连接有点困惑。您是说您实际上可以使用 Pentaho 连接到删除 SQL Server 实例?当您说管理工作室时,我以为您是指 Enterprise Management Studio。哪一个? Pentaho 服务器从哪里运行? @Brian.D.Myers 我的本地机器上有 pentaho 以及 sql server express management studio。我拥有的 pentaho 可以连接到我拥有的远程 sql 服务器,但它无法连接到我的本地 sql 服务器。我不断收到错误Server=ELRAPHA-PC\SQLEXPRESS;Database=logTester;User Id=sa; Password=pass;。因此,我在 Visual Studio 中编写了一段代码,以使用 conn 字符串 connectionString="Server=ME-PC\SQLEXPRESS;Database=Tester;User Id=user; Password=pass;" 连接到本地 sql 服务器并连接。由于能够通过 Visual Studio 进行连接,因此我不会收到 TCP/IP 错误。【参考方案2】:

如果您在本地机器上使用 Sql Express 实例并连接 Pentaho,您必须清空字段端口号。试试下面的配置:

Host Name: localhost  
Database: database_name  
Instance Name: sqlexpress 
Port Number:  
User Name: user_name  
Password: *****

【讨论】:

【参考方案3】:

如果出现问题,连同端口号清空,就是手动设置实例名称为手动参数:

instanceName=SQLEXPRESS

默认的 pentaho 对话框(至少到 8.3)只生成代码“instance=SQLEXPRESS”

【讨论】:

以上是关于pentaho 本地和远程连接到 sql server的主要内容,如果未能解决你的问题,请参考以下文章

将 pentaho 9.1 连接到 Azure SQL Server

Pentaho 仪表板不显示图形

如何使用远程桌面连接到 SQL Server

通过SSL将IBM DB2 JDBC连接到编目数据库

Pentaho 错误 - ConnectionServiceImpl.ERROR_0009 - 连接到数据库 [null] 失败

SQL server 2005 无法连接到服务器?