我尝试使用JDBC连接尝试连接到SQL Server数据库64位无济于事。我使用在线发现的标准驱动程序(sqljdbc42.jar和mssql-jdbc-6.1.0.jre8.jar),但它们似乎没有用。是否有可能驱动程序是32位并且弄乱了连接。我能够通过Windows( 32和64位连接)创建ODBC连接并使用JdbcOdbc驱动程序进行连接,但是在Java 8上不推荐使用此连接,我无法使用以前的版本。可能是什么问题? JDBC日志只是说它无法建立连接并检查防火墙问题和诸如此类的东西(由于我们能够使用ODBC连接,因此显然不存在)。
请注意,我不是配置SQL Server实例的人,而是我们客户端的数据库管理员,因此我不知道他们可能已经完成的任何特定配置。它是一个由File360
应用程序使用的数据库,如果有帮助的话。
下面是我使用的代码(它不应该是相关的,因为它曾经在客户端迁移到新的Windows Server计算机之前工作)
private void initUsingJDBC(Properties configurationProperties) {
logger.debug("Creating datasource using driver: " + configurationProperties.getProperty("driverName"));
DriverManagerDataSource frameworkDS = new DriverManagerDataSource(configurationProperties.getProperty("driverName"));
frameworkDS.setUrl(configurationProperties.getProperty("frameworkDBUrl"));
frameworkDS.setUsername(configurationProperties.getProperty("frameworkDBUser"));
frameworkDS.setPassword(configurationProperties.getProperty("frameworkDBPass"));
logger.info("Setting up framework datasource on url: " + frameworkDS.getUrl());
frameworkJdbcTemplate = new JdbcTemplate(frameworkDS);
DriverManagerDataSource dataDS = new DriverManagerDataSource(configurationProperties.getProperty("driverName"));
dataDS.setUrl(configurationProperties.getProperty("dataDBUrl"));
dataDS.setUsername(configurationProperties.getProperty("dataDBUser"));
dataDS.setPassword(configurationProperties.getProperty("dataDBPass"));
logger.info("Setting up data datasource on url: " + dataDS.getUrl());
dataJdbcTemplate = new JdbcTemplate(dataDS);
}
使用以下配置无法连接:
driverName=com.microsoft.sqlserver.jdbc.SQLServerDriver
frameworkDBUrl=jdbc:sqlserver://vm-micro-dbprod\\SQL2012;databaseName=File360_Framework
但是,使用ODBC它成功连接:
private void initUsingODBC(Properties configurationProperties) {
logger.debug("Creating odbc datasource " + configurationProperties.getProperty("frameworkODBCUrl"));
DriverManagerDataSource frameworkDS = new DriverManagerDataSource();
frameworkDS.setDriverClassName("sun.jdbc.odbc.JdbcOdbcDriver");
frameworkDS.setUrl(configurationProperties.getProperty("frameworkODBCUrl"));
frameworkDS.setUsername(configurationProperties.getProperty("frameworkDBUser"));
frameworkDS.setPassword(configurationProperties.getProperty("frameworkDBPass"));
logger.info("Setting up framework datasource on url: " + frameworkDS.getUrl());
frameworkJdbcTemplate = new JdbcTemplate(frameworkDS);
logger.debug("Creating odbc datasource " + configurationProperties.getProperty("dataODBCUrl"));
DriverManagerDataSource dataDS = new DriverManagerDataSource();
dataDS.setDriverClassName("sun.jdbc.odbc.JdbcOdbcDriver");
dataDS.setUrl(configurationProperties.getProperty("dataODBCUrl"));
dataDS.setUsername(configurationProperties.getProperty("dataDBUser"));
dataDS.setPassword(configurationProperties.getProperty("dataDBPass"));
logger.info("Setting up data datasource on url: " + dataDS.getUrl());
dataJdbcTemplate = new JdbcTemplate(dataDS);
}
使用Windows 10 ODBC Data Sources
(32位和64位工作)定义了ODBC连接。