iT邦幫忙

0

C#連結SQL Server,連線字串需指定Port號,才有辦法正常連結?

日前遇到有關資料庫連線的問題,但找了很久似乎沒有遇到類似問題的資料,
所以上來請教各位是否有曾遇過類似的問題? 謝謝。

Server=myServer;Database=myDataBase;User Id=Username;Password=Password;

當使用正常連線字串進行連結,會出現以下錯誤:

建立連接至 SQL Server 時,發生網路相關或執行個體特定的錯誤。找不到或無法存取伺服器。
確認執行個名稱是否正確,以及 SQL Server 是否設定為允許遠端連線。 (provider: Named Pipes Provider, error: 40 - 無法開啟至 SQL Server 的連接)

所以當我後面加上Port號(如myServer後方數字12345所示),就不會出現上述錯誤,才有辦法順利開啟資料庫連線,這有點令人匪夷所思...

Server=myServer,12345;Database=myDataBase;User Id=Username;Password=Password;

不知道有沒有人遇過類似的問題,麻煩各位了,謝謝。

0
pilipala
iT邦新手 5 級 ‧ 2020-07-14 03:18:31

預設 Port 是 1433,假如有更改 Port 的話,連線字串上必須加上 Port 才能進行連線,如同原 PO 測試的結果

看更多先前的回應...收起先前的回應...

確實是有更改預設Port,但是同樣正常連線的字串(無需加Port),在其他地方是可正常執行,因為有先安裝別名了。

player iT邦大師 1 級 ‧ 2020-07-14 08:53:57 檢舉

你的說法超奇怪的?
改過預設Port,卻又說在其他地方是可正常執行?
就算加了別名。也不能會知道要連哪一個Port吧?

player
請參考:https://dotblogs.com.tw/terrychuang/2012/03/25/71015
透過這樣設定,就可以不用指定Port了

player iT邦大師 1 級 ‧ 2020-07-14 12:25:16 檢舉

1.C#與資料庫不在同一台?
2.SQL裡設的別名與DNS或hosts裡的主機名重複到?

0
allenlwh
iT邦研究生 2 級 ‧ 2020-07-14 08:48:03

如果不是使用預設Port時,我多半都會使用ODBC來做驗證及測試。
請參考

根據你提供的方法試了一下,是可以正常連線的

allenlwh iT邦研究生 2 級 ‧ 2020-07-14 11:08:48 檢舉

那就可以透過上面的方法,來取得最正確的connectiong string

1
尼克
iT邦高手 1 級 ‧ 2020-07-14 09:31:58

https://ithelp.ithome.com.tw/upload/images/20200714/20011825PU47kdlP62.jpg

0
japhenchen
iT邦研究生 1 級 ‧ 2020-07-14 14:51:40

ip後面加逗點跟上埠號不就得了?

Server=myServer,11433;Database=myDataBase;User Id=Username;Password=Password;

如果是多個SQL實例,則後面加雙反斜線加實例instance名

string connStringWork = "Data Source=server\\nameOfInstance;Initial Catalog=db;Integrated Security=True;Application Name=ЦС";
0
PPTaiwan
iT邦新手 4 級 ‧ 2020-07-15 11:13:34

SQL Server 不以預設 Prot 來做為連線,這己經是很正常的事情也不用覺得奇怪,而且停用 sa 也會正常的事情。

為什麼要這樣子?? 這一切都是為了防駭客,不管是那家公司都會修改 PROT 不給非公司人員來連線,以免 Server 都在回應駭客是否可以連線,還有猜猜 sa 密碼是什麼,忙都忙翻了也沒有空來回應其他系統的要求。就算是你用雲端資料庫也應該注意,不然,你流量馬上被吃光然後你還要付錢。

我要發表回答

立即登入回答