首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java JDBC 整合認證連接 SQL Server 完整方案

     編輯:Java 相關知識

SQL Server 支援 Windows 整合認證 (NTLM/Kerberos),Java 透過 Microsoft JDBC 驅動實現免帳密連線,需部署原生 sqljdbc_auth.dll。

方案一:DataSource 物件模式

SQLServerDataSource ds = new SQLServerDataSource();
ds.setIntegratedSecurity(true);           // 關鍵:啟用整合認證
ds.setServerName("host\\instance");
ds.setPortNumber(1433);
ds.setDatabaseName("AdventureWorksLT2008");
Connection conn = ds.getConnection();     // 使用當前 Windows 使用者身分

方案二:JDBC URL 模式

String url = "jdbc:sqlserver://host\\instance:1433;" +
             "databaseName=AdventureWorksLT2008;" +
             "integratedSecurity=true;";
Connection conn = DriverManager.getConnection(url);

關鍵部署步驟

  1. 下載 Microsoft JDBC Driver 包含 sqljdbc_auth.dll (x86/x64/IA64)
  2. 根據 JVM 位元數複製對應 DLL 至 JRE/lib/ext/ 或 PATH 目錄
  3. 確認 SQL Server 啟用「Windows 驗證模式」
  4. 執行 Java 程式的 OS 使用者需具資料庫登入權限
  5. 對比:SQL 認證 vs 整合認證

    完整範例:查詢產品前 10 筆

    try (Connection conn = ds.getConnection();
         Statement stmt = conn.createStatement();
         ResultSet rs = stmt.executeQuery("SELECT TOP 10 * FROM SalesLT.Product")) {
        while (rs.next()) {
            System.out.println(rs.getString("Name") + " | " + rs.getString("ProductNumber") + " | " + rs.getString("ListPrice"));
        }
    }

    生產環境建議:使用 Kerberos + SPN 配置實現雙向認證,避免 NTLM 重放攻擊風險。

    1. 上一篇文章:
    2. 下一篇文章:
    Copyright © 程式碼之家 All Rights Reserved
    維度SQL 認證Windows 整合認證
    連線字串user=sa;password=xxxintegratedSecurity=true
    原生庫不需要必需 sqljdbc_auth.dll
    認證管理資料庫內建Active Directory / 本機帳號
    安全性密碼輪換需求單一登入、群組策略
    跨平台支援僅 Windows (需 DLL)