簡體   English   中英

AD 域 Controller 下的 Ubuntu: UnsatisfiedLinkError: no mssql-jdbc_auth-8.4.1.x64 in Z93F725A07423FE1C8846F448B3D21.

[英]Ubuntu under AD Domain Controller: UnsatisfiedLinkError: no mssql-jdbc_auth-8.4.1.x64 in java.library.path

我在 AD 域 controller 下添加了Ubuntu 20.04並在 Ubuntu 機器上安裝了MsSQL Server。

我的sqlcmd localhost與 windows 身份驗證完美配合

$ sqlcmd -S localhost
1> select @@version
2> GO
                                                                                                                                                                                                                                                                                                            
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Microsoft SQL Server 2019 (RTM-CU10) (KB5001090) - 15.0.4123.1 (X64) 
    Mar 22 2021 18:10:24 
    Copyright (C) 2019 Microsoft Corporation
    Developer Edition (64-bit) on Linux (Ubuntu 20.04.2 LTS) <X64>                                                                                                      

(1 rows affected)
1> 

現在,我正在嘗試將它與簡單的 Java 代碼連接起來

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.SQLException;
 
/**
 * This program demonstrates how to establish database connection to Microsoft
 * SQL Server.
 *
 */
public class JdbcSQLServerConnection {
 
    public static void main(String[] args) {
 
        Connection conn = null;
 
        try {
 
            String dbURL = "jdbc:sqlserver://170.18.xx.xx:1433;integratedSecurity=true";
            String user = "sa";
            String pass = "*****************";
            conn = DriverManager.getConnection(dbURL, user, pass);
            if (conn != null) {
                DatabaseMetaData dm = (DatabaseMetaData) conn.getMetaData();
                System.out.println("Driver name: " + dm.getDriverName());
                System.out.println("Driver version: " + dm.getDriverVersion());
                System.out.println("Product name: " + dm.getDatabaseProductName());
                System.out.println("Product version: " + dm.getDatabaseProductVersion());
            }
 
        } catch (SQLException ex) {
            ex.printStackTrace();
        } finally {
            try {
                if (conn != null && !conn.isClosed()) {
                    conn.close();
                }
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
    }
}

我將此源代碼運行為

java -cp mssql-jdbc-8.4.1.jre8.jar:sqljdbc4.jar:. -Djava.library.path=mssql-jdbc_auth-8.4.1.x64.dll JdbcSQLServerConnection

它引發異常, Caused by: java.lang.UnsatisfiedLinkError: no mssql-jdbc_auth-8.4.1.x64 in java.library.path

我在下面發現了幾個未回答的線程,但不確定他們是否在任何 DC 下添加了他們的機器

  1. java.library.path 中沒有 mssql-jdbc_auth-8.4.1.x64
  2. linux 上的 java.library.path 中沒有 mssql-jdbc auth-8.4.1.x64
  3. https://github.com/microsoft/mssql-jdbc/issues/1453

似乎這是長期要求的答案,我終於能夠連接到安裝在Ubuntu 20.04上的MsSQL Server 2019

我只需要使用 DB URL 的以下語法,我不需要傳遞任何DLLauth文件。

"jdbc:sqlserver://172.18.44.171:1433;integratedSecurity=true;authenticationScheme=javaKerberos;authentication=NotSpecified";

我只是跑

java -cp mssql-jdbc-8.4.1.jre8.jar:. JdbcSQLServerConnection

請在此處參考此討論Connect To SQL Server With Windows Authentication From A Linux Machine through Z82269B9B71AB4A147321

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM