sqlserver2000資料庫連線失敗常見問題及解決方案
try{
String sql="insert into test1 values('"+name+"','"+call+"','"+Email+"','"+tel+"','"+addr+"','"+text+"')";
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test1";
String user = "sa";
String password = "123456";
java.sql.Connection conn = (java.sql.Connection) DriverManager.getConnection(url, user, password);
System.out.println("資料庫連線成功!");
Statement st=conn.createStatement();
st.executeUpdate(sql);
conn.close();
st.close();
}catch(ClassNotFoundException e)
{System.out.println("資料庫連線失敗:"+e.getMessage());}
catch (SQLException ex){
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
}
首先檢查資料庫名,使用者,密碼是否正確
錯誤1:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket
解決方案:
裝sql2000補丁sp4,開啟工具—SQL Servers屬性(配置),點選常規選項卡,點選網路配置,“ 啟動的協議”中使用“TCP/IP協議”(把命名管道禁止掉),然後開啟“安全性”選項卡,選擇身份驗證為“SQL Server和 Windows ” ,把sql2000三個驅動包(msbase.jar,mssqlserver.jar,msutil.jar)匯入工程,涮新,重新部署,重啟tomcat
錯誤2:
使用者 'sa' 登入失敗。原因: 未與信任 SQL Server 連線相關聯。
解決方案:
這一問題一般是由於SQL Server未整合Windows身份驗證導致的,所以解決方案為:
1 開啟SQL Server企業管理器。
2 選擇伺服器名稱(local)(WindowsNT)上右鍵選擇“編輯SQL Server註冊屬性”,然後在對話方塊中選擇“使用windows身份驗證”。
3 試試一試,不行。在看看安全性設定
4 同樣右鍵,選擇“屬性”,然後開啟“安全性”選項卡。
5 在選項卡中,選擇身份驗證為“SQL Server和 Windows ”,其他不變
6.重啟sql2000伺服器
SQL2000的sa密碼更改方法
1.試試登出你的作業系統,用administrator登陸 查詢分析器--連線使用"windows身份驗證"--如果這裡能成功,你就執行下面的語句來修改sa的密碼 sp_password null,'新密碼','sa'
如 sp_password null,'123456','sa'
如果你在測試連線SQL Server 2000 JDBC連線時出現錯誤Error establishing socket.請參考如下:
用 CMD 命令NETSTAT查1433(這是預設的埠,可能被佔用,你可以重新設一個新的埠)的埠可是居然沒有沒有開啟,先看看你的伺服器有沒有開啟,如果都大開了那就說明你沒有裝SQL的sp3或sp4的補丁.
還有一個方法看你是不是要打補丁,那就是看看你的版本號:
可以用如下的方式檢視MSSQL的版本:
開啟企業管理器-〉工具-〉SQL查詢分析器-〉幫助-〉關於
檢視MSSQL的詳細版本號
如果 是 8.00.194 就是還沒打補丁
8.00.760 就是SP3
8.00.2039 就是SP4
如果你的版本號是對的,但NETSTAT查1433沒有,那可能你的1433埠被佔了,換一個埠應該就可以了.
換埠的方法是:1. 開啟企業管理器,依次在控制檯根目錄 ->Microsoft SQL Servers->SQL Server 組,列出一部分資料庫伺服器。
2. 右擊我們要連線的資料庫伺服器,選擇屬性,在常規選項卡點選網路配置彈出新視窗。
3. 在啟用的協議區域我們選擇 TCP/IP ,點選屬性按鈕,彈出新視窗。在這個視窗有網路協議預設值設定,一般預設埠是:1433。
另有一篇網上的方法,供參考:
如執行程式時出現 "Error establishing socket" 錯誤,則應進行如下除錯:
1 檢查SQL SERVER 是否允許遠端訪問.具體步驟:
1)開啟"企業管理器",開啟控制檯根目錄>SQL Server 組>資料庫
2)在相應"資料庫"上單擊右鍵,選擇"屬性"
3)選擇"連線"選項卡,檢查"遠端伺服器連線"下,RPC服務是否選擇.
2 使用telnet IP地址 1433,系統是否提示連接出錯,如系統提示出錯
檢查是否防火牆遮蔽了SQL SERVER 或 java IDE 的網路訪問埠
如果是,關閉防火牆,重新啟動SQL SERVER和java IDE,進行測試,
如果系統仍提示上述錯誤,嘗試下列步驟
3 檢查SQL SERVER 埠號及是否啟用了TCP/IP協議,具體步驟:
1)開啟"企業管理器",開啟控制檯根目錄>SQL Server 組>資料庫
2)在相應"資料庫"上單擊右鍵,選擇"屬性"
3)選擇"常規"選項卡,點選"網路配置",如啟用的協議中無"TCP/IP協議"將其加入
4)選擇"TCP/IP協議",點選"屬性",檢查其埠號是否為1433
5)如埠號為1433將其修改為其它埠號,修改jdbc連線語句,將埠號同樣改為新啟用的埠號,如jdbc:microsoft:sqlserver://server_name:1400(假設新埠號為 1400)
以下的方法你每種的去試試:
#檢查一下sql server的connection有沒有full.
#如果是認證的問題.
可到sql enterprice manager->指定server->內容->安全性.
把驗證改為 SQL server 及 windows.
#點選屬性檢查一下port是否正確.
#執行%MSSQL_HOME%/80/Tools/Binn/SVRNETCN.exe
把TCP/IP啟用.
#關掉防火牆.