1. 程式人生 > >sqlserver2000資料庫連線失敗常見問題及解決方案

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啟用.
#關掉防火牆.