2012-06-07 52 views
1

我正在使用pentaho数据集成4.1(Kettle)来构建ETL系统。我的客户需要使用窗口认证连接到数据库(MS SQL Server),我知道Kettle支持它。但是,当我运行我的Kettle作业时,它会抛出异常I/O错误:SSO失败:SSPI未初始化

"I/O Error: SSO Failed: SSPI Not Initialized"

从论坛上的文章,我将库sqljdbc_auth.dll复制到jre/bin文件夹中。结果是相当不错的,我可以使用窗口身份验证连接到SQL服务器。但是这个功能并不稳定,我的意思是它有时运行的很好,有时候会抛出异常

"I/O Error: SSO Failed: SSPI Not Initialized"

请告诉我如何解决这个错误。

谢谢。

回答

0

要连接到SQL Server 2008,我必须安装 '微软的JDBC驱动程序4.0的SQL Server',然后将路径添加到sqljdbc_auth.dll到%PENTAHO_DI_JAVA_OPTIONS%中的Spoon.bat。像这样:

set OPT=%PENTAHO_DI_JAVA_OPTIONS% "-Djava.library.path=%LIBSPATH%;C:\PROGRA~1\MICROS~1.0FO\sqljdbc_4.0\enu\auth\x86;C:\PROGRA~1\IBM\SQLLIB\BIN" "-DKETTLE_HOME=%KETTLE_HOME%" "-DKETTLE_REPOSITORY=%KETTLE_REPOSITORY%" "-DKETTLE_USER=%KETTLE_USER%" "-DKETTLE_PASSWORD=%KETTLE_PASSWORD%" "-DKETTLE_PLUGIN_PACKAGES=%KETTLE_PLUGIN_PACKAGES%" "-DKETTLE_LOG_SIZE_LIMIT=%KETTLE_LOG_SIZE_LIMIT%" 

丑陋,但这是Windows下的Java为你。现在工作相当可靠。

0

您使用的是JTDS驱动程序吗?尝试与ntlmauth.dll结合使用 - 在Windows Server 2003上运行PDI连接到各种远程sqlserver数据库时,它非常适合我们。

我们放在DLL此文件夹中:

libswt \ Win64的

+0

Yah,我在_ \ libswt \ win32_目录中看到它,甚至将它复制到_system32_和_jre/bin_文件夹中。但没有任何变化。我正在使用win7。但是,我找到了解决问题的另一种方法,我创建了一个在MS SQL Server中启用sa帐户的.NET应用程序,并使用该帐户将Kettle连接到数据库。 –

+0

谢谢你回答我:) –

+0

呃,不是很好,你必须这样做,但至少它的作品! – Codek

0

我在使用JDBC 1.2.2和MSSQL 2008时遇到了同样的问题。事实证明,驱动程序中存在一个错误,如果您使用多个连接初始化该驱动程序,它会随机崩溃。

如果我们只使用了一个初始连接到数据库,这个错误从来没有出现过。

该问题在更高版本的JDBC中得到修复。我们目前使用1.3.0和I/O Error: SSO Failed: SSPI Not Initialized永远不会出现。

相关问题