java - 无法使用jdbc以Windows身份验证模式连接到ms sql server 2005

标签 java sql sql-server jdbc

我正在尝试使用 jdbc 连接到 msq sql server 2005。Sql server 2005 安装在本地系统中,我正在尝试以下方式。但是如果我写入本地系统的 ip 地址而不是 localhost,它会失败。会是什么原因。

import java.io.File;
import java.sql.Connection;  
import java.sql.DriverManager;  
import java.sql.PreparedStatement;
import java.sql.ResultSet;  
import java.sql.Statement;  


public class mssql {  
    public static void main(String[] args) {  
        try {  
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();

            Connection connection=DriverManager.getConnection("jdbc:sqlserver://192.168.1.207:1433;databaseName=WindProfiles;integratedSecurity=true;");// If i write localhost instead of 192.168.1.207 then works else shows error
            if(!(connection==null))
            {
                System.out.println("connected");
            }

//            


        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
}  

错误

com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user ''. The user is not associated with a trusted SQL Server connection. ClientConnectionId:932514a0-5e3d-4d9c-8080-1e83ec703f9f
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
    at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:254)
    at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:84)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2908)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2234)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:2220)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1326)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at mssql.main(mssql.java:14)

我知道我可以写 127.0.0.1 而不是本地系统,但我的想法是也连接到远程系统。 当我在命令提示符 telnet 192.168.1.207 1433 中写入时,它会连接。即使它也从远程系统连接。 enter image description here

最佳答案

您缺少数据库的 usernamepassword,因此会收到此错误。使用以下方法解决您的问题:

Connection connection = DriverManager.getConnection("jdbc:sqlserver://192.168.1.207:1433;databaseName=WindProfiles","username","password");

已更新

如果您希望使用 Windows 身份验证进行连接,请参阅以下链接:(但我没有使用 Java 的 Windows 身份验证模式的经验)

  1. Connecting to SQL Server from Java

关于java - 无法使用jdbc以Windows身份验证模式连接到ms sql server 2005,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18972763/

相关文章:

java - OSGI 包中的 Pojo

java - Play!/Morphia - 以字符串形式返回 MongoID(在 json 内)/blobFieldsTracker Field

java - 有没有一种方法可以根据文本字段中输入的数据突出显示或为各个表行着色?

javascript - 使用变量处理字符串sql查询中的单引号

java - JFreeChart 折线图 OHLCDataItem

mysql - 检查 SQL 中多个属性的唯一性

php - 如何从一个数据库表中的组返回第一个值,MySQL

sql-server - 尝试使用 sqlcmd(从 Ubuntu 命令行)连接到 SQL Server 时出错?

sql - 使用 SQL 中的过程从存储表行中删除空间

sql查询按客户类型获取数据组,如果找不到客户类型需要添加默认值