專案需求將資料庫從 MySQL 遷移至 SQL Server 2000,過程中踩了不少坑。整理此文供後人參考,少走彎路。
SQL Server 2000 共有 7 個版本。實測在 Windows XP / Server 2003 上,唯有「個人開發版」可正常安裝不報錯,安裝前請確認版本與作業系統相容。
WEB-INF/lib/ 目錄。import java.sql.*;
public class DBTest {
Connection con;
Statement sta;
ResultSet rs;
String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test";
String user = "sa";
String pwd = "sa";
public DBTest() { init(); }
public void init() {
try {
Class.forName(driver);
System.out.println("driver is ok");
con = DriverManager.getConnection(url, user, pwd);
System.out.println("connection is ok");
sta = con.createStatement();
rs = sta.executeQuery("select * from room");
while (rs.next()) System.out.println(rs.getInt("roomNum"));
} catch (Exception e) { e.printStackTrace(); }
}
public static void main(String[] args) { new DBTest(); }
}
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC] Error establishing socket
原因: 預設通訊埠 1433 未開放。
解決: 務必將 SQL Server 升級至 SP3(XP/2003 環境強制需求),SP3 會自動開啟通訊埠並修正相關問題。
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]物件名 'room' 無效
原因: sa 為系統管理員帳號,雖可登入資料庫,但預設在使用者資料庫(如 test)中無任何權限。
解決: 在目標資料庫建立專用使用者(如 share):
企業管理員 → 伺服器屬性 → 安全性 → 驗證模式選 SQL Server 和 Windows(混合模式)。