資料庫基礎系列之三 Sql Server連線埠

2021-06-25 12:10:27 字數 1543 閱讀 8863

昨天遇到乙個比較奇怪的問題,機器a、機器b,都裝有sql server2000,c#程式從a連b上的資料庫ok,但是從b連a的資料庫總是有異常,異常提示「在建立與伺服器的連線時出錯。在連線到

sql server 2005 

時,在預設的設定下

sql server 

不允許進行遠端連線可能會導致此失敗」。

由於a、b上都裝有vs2005,帶著裝了sql server2005express,當時便懷疑是sql server2005在搞鬼,拿異常資訊上網搜了一下,按照網上的解決方法一步步配置了sql server2005,結果問題並沒有解決。

後來發現這些異常資訊有時候也會誤導人,實際的問題跟

sql server2005express

並沒有關係,而是出在

sql server2000

的埠設定上,因為

a機器上的資料庫埠不是預設的

1433

,導致程式連線不上。

1)看ping 伺服器ip能否能通。這個實際上是看和遠端sql server 2000伺服器的物理連線是否存在。如果不行,請檢查網路,檢視配置,當然得確保遠端sql server 2000伺服器的ip拼寫正確。

2)在dos或命令列下輸入telnet 伺服器ip埠,看能否連通。如telnet 202.114.100.100 1433。1433是sql server 2000的對於tcp/ip的預設偵聽埠。如果這一步有問題,應該檢查以下選項:

(1)檢查遠端伺服器是否啟動了sql server 2000服務。如果沒有,則啟動。

(2)檢查伺服器端有沒啟用tcp/ip協議,因為遠端連線(通過網際網路)需要靠這個協議。檢查方法是,在伺服器上開啟開始選單->程式->microsoft sql server->伺服器網路實用工具,看啟用的協議裡是否有tcp/ip協議,如果沒有,則啟用它。

(3)檢查伺服器的tcp/ip埠是否配置為1433埠。仍然在伺服器網路實用工具裡檢視啟用協議裡面的tcp/ip的屬性,確保預設埠為1433,並且隱藏伺服器核取方塊沒有勾上。

事實上,如果預設埠被修改,也是可以的,但是在客戶端做telnet測試時,寫伺服器端口號時必須與伺服器配置的埠號保持一致。如果隱藏伺服器核取方塊被勾選,則意味著客戶端無法通過列舉伺服器來看到這台伺服器,起到了保護的作用,但不影響連線,但是tcp/ip協議的預設埠將被隱式修改為2433,在客戶端連線時必須作相應的改變。

(如果埠不是1433,則在程式中設定連線字串時,應類似「server=192.168.6.10,2433;database=….」)

(4)如果伺服器端作業系統打過sp2補丁,則要對windows防火牆作一定的配置,要對它開放1433埠,通常在測試時可以直接關掉windows防火牆(其他的防火牆也關掉最好)。

(5)檢查伺服器是否在1433埠偵聽。如果伺服器沒有在tcp連線的1433埠偵聽,則是連線不上的。檢查方法是在伺服器的dos或命令列下面輸入:netstat -a -n 或者是netstat -an,在結果列表裡看是否有類似 tcp 127.0.0.1 1433 listening 的項。如果沒有,則通常需要給sql server 2000打上至少sp3的補丁。

資料庫基礎系列之三 Sql Server連線埠

昨天遇到乙個比較奇怪的問題,機器 a 機器 b,都裝有 sql server2000,c 程式從a連b 上的資料庫 ok,但是從b連 a的資料庫總是有異常,異常提示 在建立與伺服器的連線時出錯。在連線到 sql server 2005 時,在預設的設定下 sql server 不允許進行遠端連線可能...

資料庫基礎系列之三 Sql Server連線埠

昨天遇到乙個比較奇怪的問題,機器 a 機器 b,都裝有 sql server2000,c 程式從a連b 上的資料庫 ok,但是從b連 a的資料庫總是有異常,異常提示 在建立與伺服器的連線時出錯。在連線到 sql server 2005 時,在預設的設定下 sql server 不允許進行遠端連線可能...

資料庫之三正規化

如果不想看理論性的數的話,又想重溫一下資料庫知識,又是日本動漫迷的話,可以看一下 作為漫畫和專業知識結合在一起的點子十分有創意,而且讀起來也有趣。資料庫通過e r,entity relationship模型進行資料庫的設計,根據具體的關係。一對多,乙個職員對多個客戶。如果只有乙個職員。多對一,反過來...