Configurando dependência maven para SQL Server


122

Estou desenvolvendo um portlet em que tenho acesso ao Hibernate no banco de dados do SQL Server. Eu configurei dependências para isso e tento descobrir o conector do SQL Server da mesma maneira que sei que o MySql o possui.

Ainda assim, minha pesquisa no Google oferece apenas Mysql se eu procurar pelo conector do SQL Server. Qual é o valor correto da dependência do maven ?


Respostas:


213

Faça o download do JAR do driver no link fornecido pelo Olaf e adicione-o ao repositório local do Maven com;

mvn install:install-file -Dfile=sqljdbc4.jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0 -Dpackaging=jar

Em seguida, adicione-o ao seu projeto com;

<dependency>
  <groupId>com.microsoft.sqlserver</groupId>
  <artifactId>sqljdbc4</artifactId>
  <version>4.0</version>
</dependency>

13
As notas de versão da versão vinculada à resposta de Olaf afirmam que é "Microsoft JDBC Driver 4.0 for SQL Server". Então, eu usaria "-Dversion = 4.0" na instalação do mvn.
George Armhold

2
Corri para um problema: "não POM neste diretório" A solução para isso pode ser encontrada aqui: stackoverflow.com/questions/16348459/...
Alan B. Dee

4
jTDS SourceForge é a sua resposta
Junchen Liu


Fazer o download e adicioná-lo ao repositório maven local não levaria a um acoplamento rígido com a máquina de desenvolvimento em que você está construindo seu aplicativo? Quero dizer, se o mesmo projeto for construído em uma máquina diferente, ele não encontrará o jar no repositório local. Não seria bom adicioná-lo ao projeto para que ele esteja disponível no VCS?
precisa saber é o seguinte

69

Responda à Microsoft "nova" e "legal".

Sim, o driver do SQL Server agora sob licença MIT em

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.1.0.jre8</version>
</dependency>

Resposta para a Microsoft "antiga":

Para o meu caso de uso (teste de integração), foi suficiente usar um escopo do sistema para a dependência do driver JDBC, como tal:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>sqljdbc4</artifactId>
    <version>3.0</version>
    <scope>system</scope>
    <systemPath>${basedir}/lib/sqljdbc4.jar</systemPath>
    <optional>true</optional>
</dependency>

Dessa forma, eu poderia colocar o driver JDBC no controle de versão local. Não é necessário que cada desenvolvedor configure manualmente as coisas em seus próprios repositórios.

Eu me inspirei nesta resposta para outra pergunta do Stack Overflow e também escrevi sobre isso aqui .


Se for possível, eu acho que é melhor para carregar o JAR no repositório maven local (Nexus)
mcoolive

@mcoolive: Definitivamente é melhor, principalmente. Mas, às vezes, é mais fácil (e ainda apropriado) fazer um trabalho rápido e sujo.
Lukas Eder

Esta resposta está desatualizada em comparação com a resposta atualizada de Touzery.
Blessed Geek

1
@BlessedGeek: Bem, atualizei minha resposta antes mesmo de Touzery. De fato, a resposta de Touzery é mais desatualizada, porque ainda faz referência a uma biblioteca do sourceforge. sourceforge !!
Lukas Eder

1
@MikhailFedorov: Minha solução funcionou para mim. Sinta-se à vontade para adicionar sua própria resposta (ou mesmo um par de perguntas / respostas) que mostre como resolver isso, seria ótimo para a comunidade.
Lukas Eder #

16

Há também uma alternativa: você pode usar o driver jTDS de código aberto para o MS-SQL Server, que é compatível, embora não seja fabricado pela Microsoft. Para esse driver, há um artefato que você pode usar:

http://jtds.sourceforge.net/

Em http://mvnrepository.com/artifact/net.sourceforge.jtds/jtds :

<dependency>
    <groupId>net.sourceforge.jtds</groupId>
    <artifactId>jtds</artifactId>
    <version>1.3.1</version>
</dependency>

ATUALIZAÇÃO em novembro de 2016, a Microsoft agora publicou seu driver MSSQL JDBC no github e agora também está disponível no maven:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.1.0.jre8</version>
</dependency>

Para Java 1.6: Acho que as versões mais altas são para 1.7 .. <dependency> <groupId> net.sourceforge.jtds </groupId> <artifactId> jtds </artifactId> <versão> 1.2.4 </version> </ Dependência>
Roshan Khandelwal

2
nota que não houve lançamentos de JTDS desde 2013, de modo que pode ser um mau conselho hoje ...
Emmanuel Touzery

O motorista jTDS teve problemas com SSL em java 8 (remendado, mas não lançado) portanto, transferido para sqljdbc4
Rychu

9

Acredito que você esteja procurando o driver JDBC do Microsoft SQL Server: http://msdn.microsoft.com/en-us/sqlserver/aa937724


Sim, é esse. Gostaria de carregá-lo através do maven, portanto, essa não foi realmente a resposta para minha pergunta. Então, a primeira doação que receberá minha marca por sua resposta!
Mico

3
Parece que há algumas divergências entre o pessoal da Maven e da Microsoft em relação ao licenciamento e redistribuição do driver JDBC: blogs.msdn.com/b/jdbcteam/archive/2010/03/02/…
Olaf

3

Tenha cuidado com as respostas acima. O sqljdbc4.jar não é distribuído com uma licença pública e é por isso que é difícil incluí-lo em um jar para tempo de execução e distribuição. Veja minha resposta abaixo para obter mais detalhes e uma solução muito melhor. Sua vida se tornará muito mais fácil como a minha quando encontrei esta resposta.

https://stackoverflow.com/a/30111956/3368958


2

Mesmo depois de instalar o sqlserver jar, meu maven estava tentando buscar a dependência do repositório do maven. Eu então, desde que meu pom o repositório da minha máquina local e funcione bem depois disso ... pode ser útil para alguém.

    <repository>
        <id>local</id>
        <name>local</name>
        <url>file://C:/Users/mywindows/.m2/repository</url>
    </repository>


1

Parece que a Microsoft publicou alguns de seus drivers na maven central:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.1.0.jre8</version>
</dependency>
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.