一直都是連接的遠程測試服務器的數據庫,今天想把自己的數據庫開放出來讓公司同事連接,竟然連接失敗!轉了很大一個圈終於搞定了。
接下來就把這次心歷路程發出來,希望能幫助到有需要的博友。
PS: 我和同事的數據庫是 sqlserver2008,sql2000/2005請做參考。
因為是把我的機器開放出來讓同事連,所以以下把 本機 稱作 服務器,同事機 稱作 客戶端
一、telnet服務器
首先想到用 telnet命令 做連接測試
因為默認sqlserver服務占用的是1433端口,所以在客戶端輸入dos命令
telnet 128.0.*.* 1433 // (128.0.*.* 是 服務器IP地址)
毫無疑問,連接失敗。
怎么解決呢?
1.關閉防火牆
首先想到是不是被防火牆阻止了,在服務器端打開控制面板->windows防火牆,點擊 關閉
然后,再一次在客戶端 輸入dos命令 telnet 128.0.*.* 1433
好吧,依然連接失敗。
2.打開 sqlserver 配置管理器,修改配置(服務器端)
不只是防火牆的問題,我還是看看sqlserver的配置是否出了問題吧
開始->所有程序->Microsoft SQL Server 2008->配置工具->SQL Server 配置管理器
雙擊打開 SQL Server 配置管理器(本地) 折疊菜單下的 SQL Server 網絡配置,點擊查看SQLEXPRESS的協議
原來我的 管道協議Name pipes 和 TCP/IP 協議 都被禁用了!
右鍵 啟用
SQL Native Client 10.0 配置菜單下的 客戶端協議 也做如上改動,啟用這2個協議。
這下在客戶端 輸入dos命令 telnet 128.0.*.* 1433,終於連接成功了。
--------------------------------------------------------------------------------------------------------------------------------------------------------
當然,如果你的SQL Server服務沒有啟動,那肯定是連接不上的。
同樣是配置管理器,點擊 SQL Server 服務,查看到該服務運行的狀態,如果是停止狀態,就要點選服務,右鍵 啟動 了
有些時候啟動服務會報錯?會不會是你的1433端口被占用了?
在dos窗口下輸入命令 netstat -ano | Find "1433"
成功找到,表明確實被占用了,最后一個是占用該端口的進程ID。
PS: 當然,我這里被占用的就是SQL Server服務本身;因為我已經啟用該服務了啊,看上圖,進程ID是不是1496?
這個時候,你要么kill掉改進程,要么就該端口啦。殺進程太暴力我就不講了,改端口的話:
還是SQL Server網絡配置,點擊SQLEXPRESS的協議,看見TCP/IP協議了么?
這次,右鍵 TCP/IP協議 點擊 屬性,切換到 IP地址 這一欄,修改每個IP的 TCP端口 為你想指定的端口(這個端口不能再被占用啦)
PS: 直接修改 IPAll 里面的端口應該也是可以的。見下圖(紅色區域中的數字就是你要修改的端口了)
重新啟動一下SQL Server 服務吧。
--------------------------------------------------------------------------------------------------------------------------------------------------
好了,已經可以成功 telnet 了,我再用sa賬戶連接一次數據庫看看。
還是失敗!我在服務器端用sa賬戶也是連接失敗!
二、修改數據庫配置屬性(服務器端)
既然如此,應該是sa賬戶出現了問題,我查查看
開始->所有程序->Microsoft SQL Server 2008->SQL Server Management Studio
如果你沒有這個管理工具,那就裝一下吧
先用localhost,身份驗證選擇 ”windows身份驗證“登錄進去(這個應該是可以的吧)
右鍵localhost,選擇屬性,點擊 安全性,修改 服務器身份驗證 為 “SQL Server 和 windows 身份驗證”
同時,在左邊的 選擇頁 點擊 連接 ,找到 ”允許遠程連接到此服務器“,勾選上該選項。
這下,我終於連接上了。
PS: 鑒於該篇博文是在第二天才寫的,中間發生的一些其他問題我暫時回想不起來,如果有博友遇到了其他問題,可以在下面留言。
看看大家會給出什么解決辦法。