1

我想設置一個JDBC連接到SQL Server 2008,我創建在SQL Server數據庫這樣的信息:我安裝了JDBCJDBC連接到SQL Server:登錄失敗,用戶X

CREATE LOGIN xtest WITH PASSWORD = 'berenjenas7((('; 
GO 
CREATE USER samxtest FOR LOGIN xtest; 
GO 
GRANT SELECT TO samxtest; 
GO 
GRANT INSERT TO samxtest; 
GO 
GRANT UPDATE TO samxtest; 
GO 
GRANT DELETE TO samxtest; 
GO 

驅動程序從這裏:http://www.microsoft.com/en-us/download/details.aspx?id=11774我用這個鏈接的connectURL類:http://msdn.microsoft.com/en-us/library/aa342339.aspx 爲了測試連接

我離開了代碼中的默認端口1433。下面的圖片應該是證明這是真的端口: enter image description here 當然,我改變了連接字符串:

String connectionUrl = "jdbc:sqlserver://localhost:1433;databaseName=XTest;user=samxtest;password=berenjenas7((("; 

我不明白什麼是錯的? 我得到的錯誤是:

com.microsoft.sqlserver.jdbc.SQLServerException:登錄失敗,用戶 'samxtest'。 ClientConnectionId:2344af .....在 com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216) 在 com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:254) 在com.microsoft.sqlserver.jdbc.TDSParser.parse在 com.microsoft.sqlserver.jdbc在 com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2908)(tdsparser.java:84) .SQLServerConnection.logon(SQLServerConnection.java:2234) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.access $ 000(SQLServerConnection.java:41) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection $ LogonComma nd.doExecute(SQLServerConnection.java:2220) 在 com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java: 1715) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1326) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991) 在 com.microsoft .sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827) at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012) at jav a.sql.DriverManager.getConnection(來源不明)在 java.sql.DriverManager.getConnection(來源不明)在 connectURL.main(connectURL.java:18)

+0

是否CREATE USER samxtest進行登錄XTEST;是否與設置的登錄啓用相同? – swingNoobie

+0

@Sam請回顧一下,可能[複製](http:// stackoverflow。com/questions/6403636/connecting-sql-server-2008-to-java-login-failed-for-user-error) – gks

+0

我不知道它們是否相同。但我做了一個測試,也試過這個:ALTER LOGIN xtest ENABLE; ALTER LOGIN xtest WITH PASSWORD ='abcdefghijkl'然後用String替換連接字符串connectionUrl =「jdbc:sqlserver:// localhost:1433; databaseName = XTest; user = xtest; password = abcde ghijkl」;但它仍然不起作用。 – Sam

回答

4

誤讀:

確保SQL服務器「混合模式(Windows身份驗證和SQL Server身份驗證)」的身份驗證模式。

運行下面的腳本修改驗證

LOGIN xtest ENABLE 

ALTER LOGIN samxtest WITH PASSWORD = 'password' 
+0

嗨,謝謝陌生人!我沒有看到混合模式,當我打開Sql Server Management Studio時:Windows身份驗證和Sql Server身份驗證,我每次都選擇Windows身份驗證,因此我使用服務器名稱=「local」登錄。我應該將其改爲混合型,以及如果它不顯示? – Sam

+0

此外,samxtest(如果你檢查我的初始問題)不是一個登錄,它是一個用戶。登錄名稱爲xtest。我嘗試了LOGIN xtest的說法(這在我的第一個評論中對swingNoobie進行了詳細說明)。雖然沒有工作。 – Sam

+1

請驗證這一點,通過檢查服務器的屬性,然後SECURITY,它應該在'SQL Server和Windows身份驗證模式' – gks

相關問題