这让我很头疼。
我刚在笔记本电脑上设置了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.jar
和sqljdbc.jar
以及sqljdbc_auth.dll
的x64和x86版本。
我正在运行x64操作系统但是我安装的jdk转到了Programfiles(x86)所以我猜我安装的java是用于x86的。由于这个原因,我将sqljdbc4.jar
和x86版本的sqljdbc_auth.dll
复制到了directorys:
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 server上启用了TCI / IP。
正如我所提到的,我可以通过管理工作室连接到sql server,但是当我尝试通过以下网页浏览器中的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: 尝试连接数据库时出错[/ p>
连接到数据库的错误:(使用类com.microsoft.sqlserver.JDBC.SqlServerDriver) 与主机localhost,端口1433的TCP / IP连接失败。 错误:连接被拒绝:连接。
我没有得到错误的做法,特别是因为mysql是直截了当的。一整天都在这。我需要帮助 。请问任何人都可以看到我的错误或遗漏的内容吗?帮助
答案 0 :(得分: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
我会确保32位和64位版本的sqljdbc_auth.dll都位于各自的位置,因为您似乎有一个混合系统。
或者,您可以使用更简单的SQL Server身份验证,但不与AD等集成。
编辑:
哎呀,我忘记了非常重要的事情。必须让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位lib添加一个条目,因为你有一个混合环境。
基本上,无论您使用sqljdbc驱动程序启动哪个程序,都必须将sqljdbc_auth.dll的路径添加到Java库路径(即-Djava.library.path=%LIBSPATH%
)。执行此操作后,我的PDI实例可以通过Windows身份验证连接到SQL Server,没有任何问题。我不使用BI_Server或管理控制台,但我怀疑你会遇到同样的问题。
注意,我没有使用SQLEXPRESS或混合32位JVM / 64位操作系统环境的经验。也可能存在问题,但如果您想对Windows Server使用Windows身份验证,则必须至少处理库路径问题。
答案 1 :(得分:0)
如果您在本地计算机上使用Sql Express并连接Pentaho,则必须清空字段端口号。请尝试以下配置:
private static byte[] reverseUtf8(byte[] input) {
byte[] reversed = new byte[input.length];
for (int i = input.length - 1, j = 0; i >= 0; i--) {
byte b = input[i];
if ((b & 0x80) == 0) {
reversed[j++] = b;
} else {
int k = i;
while (k > 0 && (input[k] & 0xC0) == 0x80)
k--;
System.arraycopy(input, k, reversed, j, i - k + 1);
j += i - k + 1;
i = k;
}
}
return reversed;
}
答案 2 :(得分:0)
如果有问题,再加上清空端口号,就是手动设置实例名作为手动参数:
instanceName=SQLEXPRESS
默认的pentaho对话框(至少到8.3)只生成代码“instance=SQLEXPRESS”