昨天遇到乙個比較奇怪的問題,機器
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
,導致程式連線不上。
關於sql server2000
遠端連線,也找到了一篇文章,整理一下,以後可以按下面的步驟處理: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模型進行資料庫的設計,根據具體的關係。一對多,乙個職員對多個客戶。如果只有乙個職員。多對一,反過來...