2013-12-13 77 views
7

我只想知道遠程sql server express版本的正確sql連接字符串。適用於C#的遠程SQL服務器的正確連接字符串

這是我得到了,但我得到了一些問題

SqlConnection cs = new SqlConnection(@"Data Source=(IP Address)\PC-NAME\SQLEXPRESS,1433;Network Library=DBMSSOCN;Initial Catalog=dbase;User ID=sa;Password=password"); 

我在C#中的調試器得到這個錯誤:事先

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 0 - A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.) 

謝謝!

回答

9

從您的評論:

的IP地址是靜態IP地址。我正在嘗試連接建築物外面。

如果您嘗試連接的數據庫位於具有目標地址的[router/firewall/modem]後面的計算機上,則需要在[router/firewall/modem]將TCP端口1433上的所有連接轉發到目標機器。

如果您嘗試使用靜態IP地址連接到ADSL調制解調器後面的家用計算機,則需要將ADSL調制解調器配置爲使用端口轉發將外部端口1433連接到內部地址上的相同端口。這必須在調制解調器上完成,並且不能只需要連接字符串。

比方說,你有一個ADSL調制解調器監聽127.2.3.4(無效地址僅用於演示)和一臺PC後面的IP地址爲192.168.0.100。配置調制解調器轉發端口1433到192.168.0.100:1433(如何取決於調制解調器的型號)。那麼你的連接字符串是:

Data Source=127.2.3.4\SQLEXPRESS,1433;Network Library=DBMSSOCN;Initial Catalog=dbase;User ID=sa;Password=password 

假設SQLEXPRESS是服務器上的唯一數據庫實例,因爲端口1433是默認的,你可以使用簡單:

Data Source=tcp:127.2.3.4;Initial Catalog=dbase;User ID=sa;Password=password 

Network Library=DBMSSOCN規範被替換爲tcp:,並假設默認值爲實例和端口。

+0

請記住,如果我問192.168.0.100 IP地址發生了什麼?我在連接字符串中看不到。謝謝 – Danny

+0

@Danny實際的服務器地址需要在調制解調器/路由器的端口轉發中設置。連接字符串告訴SQL客戶端連接到調制解調器,該調制解調器然後將連接轉發到內部服務器。從客戶的角度來看,服務器位於公共地址,而不是私人地址。 – Corey

+0

@Corey如果我連接到安裝了SQL Server的Azure中的虛擬機,並且允許遠程訪問,該怎麼辦?在這種情況下,我可以把IP地址如果虛擬機在數據源? –

1

你爲什麼不試試SqlConnection String Builder here

2

解決方案:如果你提供遠程機器IP address那麼你並不需要提供hostname

試試這個:

SqlConnection cs = new SqlConnection(@"Data Source=(IP Address)\SQLEXPRESS,1433;Network Library=DBMSSOCN;Initial Catalog=dbase;User ID=sa;Password=password"); 
+0

嗨Sir @Sudhakar謝謝你的迴應。 IP地址是靜態IP地址。我正在嘗試連接建築物外面。那麼我應該爲此指定計算機名稱嗎? –

+0

@LucasJuan:你不需要提供主機名IMO。 –

相關問題