前些天做局域網內的數據訪問的一個小程序,可惜一直沒有搞懂在 Windows XP 下可以好好訪問,在Win 7下就是不能訪問。 后來把 Win7 的防火墻做了重新設置,開放了 TCP1433, 1434 和 UDP 1433, 1434, 以后就可以訪問了。這樣訪問了沒有幾天,不知道誰把服務器端做了什么改動,結果不管是 XP 還是 Win7,都無法訪問了。這些天來的測試數據都無法導出來,只好趁今天在辦公室等著裝修的事情,順便把這個問題解決一下。
首先把問題確認了一下,在服務器上自己訪問沒有問題。但是在局域網內的其它機器上,都訪問不到。錯誤是找不到 SQL Server 服務器,錯誤是 SQL Error 53。從網上找了很多資料,主要說了一下的問題:1,是否能夠ping通服務器;2. telnet 服務器 1433,看能否通; 3,用戶和密碼的問題。 我嘗試了一下,第2步是怎么都不通的。但是遇到另一個問題,就是在服務器上,Telnet 也是不能工作。因此是否是這個問題,就不敢肯定。用戶和密碼,訪問權限的事情,我敢肯定是不存在的。
對于SQL Server服務,其實還存在不少疑問,首先是安裝時SQL Server時需要選擇用戶帳戶的問題,不同的用戶賬戶,對應了不同訪問權限。一般從本地系統選擇系統服務,網絡服務,或者從網絡中選擇一個用戶,作為SQL Server服務的啟動者。本地的系統服務只有普通user的權限,不能進行網絡級別的訪問,但是對于僅訪問本機的服務,應該是足夠的。本地的網絡服務,相當與局域網域內的user,可以通過服務器自身的驗證,具有一般域用戶的訪問權限。網絡上的其它用戶,則根據該用戶的定義,實現特定權限的訪問,如本地或域的特殊訪問權限。這個權限也可以在安裝完成后哦,在控制面板的服務設置里面進行修改。修改后采用該帳號重新啟動服務即可生效。為了便于網內訪問,設定了特定的域用戶,能夠訪問域內的所有 SQL Server。
SQL Server 自身的安裝很快,安裝完成后,很快就試了在本機的訪問,沒有問題。然后在另外一臺電腦上用企業管理器試,卻找不到該服務器。回到這個服務器上,將服務器的網絡配置修改一下,同時啟用命名管道,TCP/IP和共享內存3鐘協議,此時再試,就可以找到該SQL服務器了。但是如果僅啟用 TCP/IP 協議,依然會找不到該服務器。我想這個域企業管理器訪問時所采用的方式有關吧。
這前面還有一個插曲,我將系統由 Windows XP 更換為 Windows Server 2003 R2 企業版。準備將該服務器加入域時,怎么都找不到域控制器。查詢分配的IP地址,網關,DNS及WINS 等設置都沒有問題,直接Ping域控也沒有問題,但就是無法找到域控。后來看到有人說必須同時將兩邊的防火墻都關閉,這樣試了一下,果然這個問題立即解決了。但是采用 XP 系統加入域時,沒有這個麻煩的。
雖然SQL Server 的局域網訪問問題解決,但是更大的問題來了 - 我們要使用的應用程序不能與我安裝的 SQL Server 2005 配合,每次啟動就立即掛起。這可是真正的大問題。不能遠程訪問,數據可以從本地導出去離線分析,但應用程序無法啟動,則數據都無法采集。沒有辦法,只好把整個系統重新安裝,回到原來的XP系統中,安裝SQL Server 2000的個人版本。安裝完成后,首先檢查應用程序能否正常工作,然后在跟前面一樣,配置服務器的網絡接口,最終還算順利的安裝好了,這個困擾了我很久的問題算是解決了。
這次重新安裝整個應用系統,雖然問題解決了,但是還留下不少疑問,主要是關于 SQL Server 的啟動賬戶和訪問權限的問題。對于具體的應用,怎樣設置一個適當的帳號,可以保證應用的前提下,不給出過大的權限,以防產生系統安全問題。這個只能在以后繼續看資料了。
|