Hi All
First off, thanks in advance for any help received. It’s much appreciated.
Second, apologies in advance for the long post. I’ve been investigating a lot, so want to be clear about what I’ve found and tried.
Third, apologies if my knowledge level is low – I’ve come to KNIME from a BI\Tableau\Business Objects\Alteryx background, rather than a Java\Python\R programming background. My focus has been on operations and performance, not on development. So whilst I’m reasonably competent in SQL and dabbled in R, that’s my limit. I’m not an app developer, nor am I a seasoned data scientist.
So, before I start, I should also note that I have read – and found no answer in – the other similar threads relating to SQL server and KNIME.
What am I trying to do? I’m on a Windows 10 machine, trying to connect KNIME to a named database running on a SQL Server 2008, which is running on a Server 2012 remote host. I’m trying to do this with Kerberos enabled, so I can use my windows logon and password.
Currently, I can do the following:
- Connect KNIME to the database without Kerberos using a dedicated username and account. This works fine, but that’s not the point; I want to use my windows account
- Connect to the remote server and use SQL Server Management Studio using my windows logon
- Connect Tableau to the server and database from my local machine pretty seamlessly
So I can use KNIME with a separate account, and use my windows logion to access the database with other programs. It therefore seems to me that it is something to do with Kerberos that is the issue.
What have I done?
- I’ve downloaded the most recent (as at 2017-05-28; this is v4.2) jdbc driver from the Microsoft website and extracted it to ‘my documents’.
- Created brand new driver profiles for SQL Server 2008, 2012 and 2014 (for java 1.7 and 1.8, i.e. 6 profiles) using the jar files I got from the above. I did this in ‘Preferences --> Data Management --> Connectivity --> Driver Definitions’
- Added the whole folder (i.e. ‘Microsoft JDBC Driver 4.2 for SQL Server) to ‘Preferences-->KNIME-->Databases’
- Checked with the DB admin about the connection logs. Those without ‘integratedsecurity = true’ (and optionally ‘authenticationscheme = javakerberos’) were logged but denied; those with ‘integratedsecurity = true’ (and optionally ‘authenticationscheme = javakerberos’) were not even logged…
- Tried to create a new connection profile (in ‘File-->new-->Connection Profile-->SQL Server’). This has boxes for the database and server, which fill out the connection string automatically; this is the same as that I put into the database reader manually. (Curiously, these boxes only appear for the SQL Server 2008 driver profile; not the 2012/14 ones; this may be relevant). It also has a tick box for integrated authentication. When ticked, it adds the ‘integratedsecurity = true’ option into the connection string. I can test the connection – which subsequently fails.
I do get an error message this last way; it says:
com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for integrated authentication.
I’ve googled this; there are many answers, some more decipherable than others, but the more common one involves putting the 32-bit sqljdbc_auth.dll file into the JRE folders. With the help of my friendly db admin, I put it in the following places:
- C:\Program Files\KNIME\jre\bin
- C:\Program Files (x86)\Java\jre1.8.0_102\bin
No dice with either. Hence me here. Does anyone have any suggestions?
Again, many thanks in advance…
Neil