0

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

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

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

我正在运行 x64 操作系统,但是我安装的 jdk 进入了 Programfiles(x86),所以我猜我安装的 java 是用于 x86 的。由于这个原因,我将sqljdbc4.jarx86 版本复制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 的 TCP/IP 连接失败,端口 1433。错误:连接被拒绝:连接。

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

4

3 回答 3

0

如果要通过 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 的位置。我必须将该 dll 的路径添加到 Spoon.bat 中的 %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 或管理控制台,但我怀疑你会遇到同样的问题。

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

于 2013-08-20T17:25:30.843 回答
0

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

Host Name: localhost  
Database: database_name  
Instance Name: sqlexpress 
Port Number:  
User Name: user_name  
Password: *****
于 2017-06-25T01:06:22.963 回答
0

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

instanceName=SQLEXPRESS

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

于 2021-05-07T16:18:46.750 回答