You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Per Newgro <pe...@gmx.ch> on 2017/02/07 15:15:14 UTC

Solr 5.5.0 MSSQL Datasource Example

Hello,

has someone a working example for MSSQL Datasource with 'Standard Microsoft SQL Driver'.

My environment:
debian
Java 8
Solr 5.5.0 Standard (download and installed as service)

server/lib/ext
sqljdbc4-4.0.jar

Global JNDI resource defined
server/etc/jetty.xml
    <New id="dataSource" class="org.eclipse.jetty.plus.jndi.Resource">
        <Arg></Arg>
        <Arg>java:comp/env/jdbc/mydb</Arg>
        <Arg>
            <New class="com.microsoft.sqlserver.jdbc.SQLServerDataSource">
                <Set name="serverName">ip</Set>
                <Set name="databaseName">mydb</Set>
                <Set name="user">user</Set>
                <Set name="password">password</Set>
            </New>
        </Arg>
    </New>

or 2nd option tried
    <New id="dataSource" class="org.eclipse.jetty.plus.jndi.Resource">
        <Arg></Arg>
        <Arg>java:comp/env/jdbc/mydb</Arg>
        <Arg>
            <New class="com.microsoft.sqlserver.jdbc.SQLServerDataSource">
                <Set name="uRL">jdbc:sqlserver://ip;databaseName=mydb;</Set>
                <Set name="user">user</Set>
                <Set name="password">password</Set>
            </New>
        </Arg>
    </New>


collection1/conf/db-data-config.xml
<dataConfig>
  <dataSource jndiName="java:comp/env/jdbc/mydb" type="JdbcDataSource">
  ...

This leads to SqlServerException login failed for user.
        at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
        at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:254)
        at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:84)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2908)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2234)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:2220)
        at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1326)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
        at com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnectionInternal(SQLServerDataSource.java:621)
        at com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnection(SQLServerDataSource.java:57)
        at org.apache.solr.handler.dataimport.JdbcDataSource$1.getFromJndi(JdbcDataSource.java:256)
        at org.apache.solr.handler.dataimport.JdbcDataSource$1.call(JdbcDataSource.java:182)
        at org.apache.solr.handler.dataimport.JdbcDataSource$1.call(JdbcDataSource.java:172)
        at org.apache.solr.handler.dataimport.JdbcDataSource.getConnection(JdbcDataSource.java:463)
        at org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:309)
        ... 12 more

But when i remove the jndi datasource and rewrite the dataimport data source to
<dataConfig>
<dataSource type="JdbcDataSource" 
              driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
              url="jdbc:sqlserver://ip;databaseName=mydb"
              user="user" password="password" />
...

Then it works.
But this way i need to configure the db in every core. I would like to avoid that.

Thanks
Per

Aw: Re: Solr 5.5.0 MSSQL Datasource Example

Posted by Per Newgro <pe...@gmx.ch>.
Thank you Fuad,

with dbcp2 BasicDataSource it is working

1st i need to add the libraries to server/lib/ext
commons-dbcp2-2.1.1.jar
commons-logging-1.2.jar
commons-pool2-2.4.2.jar
The current version i've found in http://mvnrepository.com/search?q=dbcp

Then my DataSource looks like this
    <New id="dataSource" class="org.eclipse.jetty.plus.jndi.Resource">
        <Arg></Arg>
        <Arg>java:comp/env/jdbc/myds</Arg>
        <Arg>
            <New class="org.apache.commons.dbcp2.BasicDataSource">
                <Set name="driverClassName">com.microsoft.sqlserver.jdbc.SQLServerDriver</Set>
                <Set name="url">jdbc:sqlserver://ip;databaseName=my_db</Set>
                <Set name="username">user</Set>
                <Set name="password">password</Set>
                <Set name="initialSize">25</Set>
                <Set name="maxWaitMillis">5000</Set>
                <Set name="validationQuery">SELECT 1</Set>
                <Set name="maxTotal">-1</Set>
            </New>
        </Arg>
    </New>

Thanks for your support
Per

> Gesendet: Dienstag, 07. Februar 2017 um 21:39 Uhr
> Von: "Fuad Efendi" <fu...@efendi.ca>
> An: "Per Newgro" <pe...@gmx.ch>, solr-user@lucene.apache.org
> Betreff: Re: Solr 5.5.0 MSSQL Datasource Example
>
> Perhaps this answers your question:
> 
> 
> http://stackoverflow.com/questions/27418875/microsoft-sqlserver-driver-datasource-have-password-empty
> 
> 
> Try different one as per Eclipse docs,
> 
> http://www.eclipse.org/jetty/documentation/9.4.x/jndi-datasource-examples.html
> 
> 
> <New id="DSTest" class="org.eclipse.jetty.plus.jndi.Resource">
> 
>      <Arg></Arg>
> 
>      <Arg>jdbc/DSTest</Arg>
> 
>      <Arg>
> 
>         <New class="net.sourceforge.jtds.jdbcx.JtdsDataSource">
> 
>            <Set name="User">user</Set>
> 
>            <Set name="Password">pass</Set>
> 
>            <Set name="DatabaseName">dbname</Set>
> 
>            <Set name="ServerName">localhost</Set>
> 
>            <Set name="PortNumber">1433</Set>
> 
>         </New>
> 
>      </Arg>
> 
>     </New>
> 
> 
> 
> 
> --
> 
> Fuad Efendi
> 
> (416) 993-2060
> 
> http://www.tokenizer.ca
> Search Relevancy, Recommender Systems
> 
> 
> From: Per Newgro <pe...@gmx.ch> <pe...@gmx.ch>
> Reply: solr-user@lucene.apache.org <so...@lucene.apache.org>
> <so...@lucene.apache.org>
> Date: February 7, 2017 at 10:15:42 AM
> To: solr-user-group <so...@lucene.apache.org>
> <so...@lucene.apache.org>
> Subject:  Solr 5.5.0 MSSQL Datasource Example
> 
> Hello,
> 
> has someone a working example for MSSQL Datasource with 'Standard Microsoft
> SQL Driver'.
> 
> My environment:
> debian
> Java 8
> Solr 5.5.0 Standard (download and installed as service)
> 
> server/lib/ext
> sqljdbc4-4.0.jar
> 
> Global JNDI resource defined
> server/etc/jetty.xml
> <New id="dataSource" class="org.eclipse.jetty.plus.jndi.Resource">
> <Arg></Arg>
> <Arg>java:comp/env/jdbc/mydb</Arg>
> <Arg>
> <New class="com.microsoft.sqlserver.jdbc.SQLServerDataSource">
> <Set name="serverName">ip</Set>
> <Set name="databaseName">mydb</Set>
> <Set name="user">user</Set>
> <Set name="password">password</Set>
> </New>
> </Arg>
> </New>
> 
> or 2nd option tried
> <New id="dataSource" class="org.eclipse.jetty.plus.jndi.Resource">
> <Arg></Arg>
> <Arg>java:comp/env/jdbc/mydb</Arg>
> <Arg>
> <New class="com.microsoft.sqlserver.jdbc.SQLServerDataSource">
> <Set name="uRL">jdbc:sqlserver://ip;databaseName=mydb;</Set>
> <Set name="user">user</Set>
> <Set name="password">password</Set>
> </New>
> </Arg>
> </New>
> 
> 
> collection1/conf/db-data-config.xml
> <dataConfig>
> <dataSource jndiName="java:comp/env/jdbc/mydb" type="JdbcDataSource">
> ...
> 
> This leads to SqlServerException login failed for user.
> at
> com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
> 
> at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:254)
> at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:84)
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2908)
> 
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2234)
> 
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41)
> 
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:2220)
> 
> at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
> 
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1326)
> 
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
> 
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
> 
> at
> com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnectionInternal(SQLServerDataSource.java:621)
> 
> at
> com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnection(SQLServerDataSource.java:57)
> 
> at
> org.apache.solr.handler.dataimport.JdbcDataSource$1.getFromJndi(JdbcDataSource.java:256)
> 
> at
> org.apache.solr.handler.dataimport.JdbcDataSource$1.call(JdbcDataSource.java:182)
> 
> at
> org.apache.solr.handler.dataimport.JdbcDataSource$1.call(JdbcDataSource.java:172)
> 
> at
> org.apache.solr.handler.dataimport.JdbcDataSource.getConnection(JdbcDataSource.java:463)
> 
> at
> org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:309)
> 
> ... 12 more
> 
> But when i remove the jndi datasource and rewrite the dataimport data
> source to
> <dataConfig>
> <dataSource type="JdbcDataSource" br/>
> driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" br/>
> url="jdbc:sqlserver://ip;databaseName=mydb"
> user="user" password="password" />
> ...
> 
> Then it works.
> But this way i need to configure the db in every core. I would like to
> avoid that.
> 
> Thanks
> Per
> 

Re: Solr 5.5.0 MSSQL Datasource Example

Posted by Fuad Efendi <fu...@efendi.ca>.
Perhaps this answers your question:


http://stackoverflow.com/questions/27418875/microsoft-sqlserver-driver-datasource-have-password-empty


Try different one as per Eclipse docs,

http://www.eclipse.org/jetty/documentation/9.4.x/jndi-datasource-examples.html


<New id="DSTest" class="org.eclipse.jetty.plus.jndi.Resource">

     <Arg></Arg>

     <Arg>jdbc/DSTest</Arg>

     <Arg>

        <New class="net.sourceforge.jtds.jdbcx.JtdsDataSource">

           <Set name="User">user</Set>

           <Set name="Password">pass</Set>

           <Set name="DatabaseName">dbname</Set>

           <Set name="ServerName">localhost</Set>

           <Set name="PortNumber">1433</Set>

        </New>

     </Arg>

    </New>




--

Fuad Efendi

(416) 993-2060

http://www.tokenizer.ca
Search Relevancy, Recommender Systems


From: Per Newgro <pe...@gmx.ch> <pe...@gmx.ch>
Reply: solr-user@lucene.apache.org <so...@lucene.apache.org>
<so...@lucene.apache.org>
Date: February 7, 2017 at 10:15:42 AM
To: solr-user-group <so...@lucene.apache.org>
<so...@lucene.apache.org>
Subject:  Solr 5.5.0 MSSQL Datasource Example

Hello,

has someone a working example for MSSQL Datasource with 'Standard Microsoft
SQL Driver'.

My environment:
debian
Java 8
Solr 5.5.0 Standard (download and installed as service)

server/lib/ext
sqljdbc4-4.0.jar

Global JNDI resource defined
server/etc/jetty.xml
<New id="dataSource" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg></Arg>
<Arg>java:comp/env/jdbc/mydb</Arg>
<Arg>
<New class="com.microsoft.sqlserver.jdbc.SQLServerDataSource">
<Set name="serverName">ip</Set>
<Set name="databaseName">mydb</Set>
<Set name="user">user</Set>
<Set name="password">password</Set>
</New>
</Arg>
</New>

or 2nd option tried
<New id="dataSource" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg></Arg>
<Arg>java:comp/env/jdbc/mydb</Arg>
<Arg>
<New class="com.microsoft.sqlserver.jdbc.SQLServerDataSource">
<Set name="uRL">jdbc:sqlserver://ip;databaseName=mydb;</Set>
<Set name="user">user</Set>
<Set name="password">password</Set>
</New>
</Arg>
</New>


collection1/conf/db-data-config.xml
<dataConfig>
<dataSource jndiName="java:comp/env/jdbc/mydb" type="JdbcDataSource">
...

This leads to SqlServerException login failed for user.
at
com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)

at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:254)
at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:84)
at
com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2908)

at
com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2234)

at
com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41)

at
com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:2220)

at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
at
com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)

at
com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1326)

at
com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)

at
com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)

at
com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnectionInternal(SQLServerDataSource.java:621)

at
com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnection(SQLServerDataSource.java:57)

at
org.apache.solr.handler.dataimport.JdbcDataSource$1.getFromJndi(JdbcDataSource.java:256)

at
org.apache.solr.handler.dataimport.JdbcDataSource$1.call(JdbcDataSource.java:182)

at
org.apache.solr.handler.dataimport.JdbcDataSource$1.call(JdbcDataSource.java:172)

at
org.apache.solr.handler.dataimport.JdbcDataSource.getConnection(JdbcDataSource.java:463)

at
org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:309)

... 12 more

But when i remove the jndi datasource and rewrite the dataimport data
source to
<dataConfig>
<dataSource type="JdbcDataSource" br/>
driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" br/>
url="jdbc:sqlserver://ip;databaseName=mydb"
user="user" password="password" />
...

Then it works.
But this way i need to configure the db in every core. I would like to
avoid that.

Thanks
Per