У меня есть приложение в Java, которое должно подключаться к Microsoft SQL Server. Я использую JRE 1.8 и sqljdbc4-2.0.jar. Когда я пытаюсь запустить:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000006f41dd27, pid=8404, tid=8960
#
# JRE version: Java(TM) SE Runtime Environment (8.0_25-b18) (build 1.8.0_25-b18)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.25-b02 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# V [jvm.dll+0x5dd27]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# D:\eclipse\workspace\Website\hs_err_pid8404.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.sun.com/bugreport/crash.jsp
#
Я искал эту ошибку в Интернете, но ничего не нашел.
Здесь код, который я использую:
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
String connectionUrl = "jdbc:sqlserver://localhost:1433;instance=SQLEXPRESS;databaseName=Mydatabase;integratedSecurity=true";
con = DriverManager.getConnection(connectionUrl);
System.out.println("Connected");
} catch (ClassNotFoundException e) {
throw new Exception("Driver Not Found");
}
Согласно этому сайту Построение URL-адреса подключения может возникнуть проблема в вашей строке подключения.
jdbc:sqlserver://localhost:1433;instance=SQLEXPRESS;databaseName=Mydatabase;integratedSecurity=true
Должно быть:
jdbc:sqlserver://localhost;instanceName=SQLEXPRESS;databaseName=Mydatabase;integratedSecurity=true
(обратите внимание на экземплярName, а не на экземпляр)
Также....
Для оптимальной производительности соединения вы должны установить номер порта при подключении к именованному экземпляру. Это позволит избежать поездки на сервер, чтобы определить номер порта. Если используются как portNumber, так и instanceName, номер порта будет иметь приоритет, и instanceName будет проигнорирован.
надеюсь, это поможет