Ich versuche, eine Verbindung von der Java 6-Konsolenanwendung zu Microsoft SQL Server 2008 R2 auf einem Microsoft Windows Server 2008 R2 64bit-System über einen ODBC-System-DSN mit SQL Server Native Client 10.0 herzustellen. Der folgende Quellcode:
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String srcURL = "jdbc:odbc:FOO";
if (dbc == null)
{
dbc = DriverManager.getConnection(srcURL);
dbc.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
}
else
{
dbc.close();
dbc = DriverManager.getConnection(srcURL);
dbc.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
}
}
catch (ClassNotFoundException cx)
{
System.out.println("class not found");
}
catch (SQLException sx)
{
System.out.println("SQL Exception: " + sx);
log.info("SQL Exception: " + sx);
}
Wirft Fehler
java.sql.exception [Microsoft] [ODBC Driver Manager] ungültige String-Pufferlänge
Verblüffenderweise ist derselbe Code mit einem ODBC-System-DSN auf genau dieselbe Weise konfiguriert, WERKE mit MS Server 2008 32bit (nicht-R2) und MS SQL Server 2008 R2. Die Microsoft ODBC-Treiber dlls zwischen den beiden Systemen sind unterschiedliche Versionen, 6.0.xxxx vs 6.1.xxxx, die ich vermute, ist der Schuldige.