1

我在做一個連接到位於同一網絡的數據庫的應用程序。數據庫管理系統是SQL Server 2005和我想的ping測試的IP地址,然後測試通過ado.net到數據庫的連接:通過ip連接到sql server數據庫

Ping p = new Ping(); 
      try 
      { 
       PingReply pingReply6 = p.Send(ip.Text); 
       MessageBox.Show("IP: " + pingReply6.Address + " \n Etat : " + pingReply6.Status); 
       string connexionString; 
       connexionString = @"Data Source=Owner;Initial Catalog=base;Integrated Security=true;"; 
       IDbConnection connexion = new SqlConnection(connexionString); 
       try { connexion.Open(); MessageBox.Show(" the connection is established "); } 
       catch(Exception ex) { MessageBox.Show(ex.ToString()); } 
      } 
      catch { MessageBox.Show("Invalid IP"); } 

正如你看到的,我想連接到通過它ADRESS IP的數據庫,我測試ping和它的作品,但是當我在測試我的服務器我的數據庫的連接,它不工作

  1. 什麼是連接字符串中的錯誤?
  2. 我該如何更改連接字符串來連接不是我自己的數據庫,而是使用指定的地址ip(windows驗證)連接到其他數據庫?
+3

你沒有在連接字符串中用IP指定! –

+0

是的,因爲我首先測試與我的數據庫的所有連接,並且失敗 –

+1

您的應用程序是否嘗試遠程服務器,如果失敗,請嘗試本地?如果沒有,您的測試不需要,爲什麼看它是否可以連接,然後先連接;只是連接,因爲它會或不會有任何辦法! – Dave

回答

1

這樣的事情可能會幫助

connexionString = @"Data Source=" + pingReply6.Address + "\Owner;Initial Catalog=base;Integrated Security=true;"; 

在您的連接字符串中的上述.意味着本地主機

由於@RemusRusanu說,IP地址被視爲形式拙劣,但上面會功能。主機名會更好

+0

我嘗試像這樣連接''ConnexionString = @「Data Source = Owner; Initial Catalog = base; Integrated Security = true;」;'我修改它像'connexionString = @「Data Source =」+ 127.0.0.1 +「\ Owner; Initial Catalog = base; Integrated Security = true;」;'它沒有 –

+1

@lamloumi CF這裏,通過IP地址連接http://www.connectionstrings.com/sql-server-2008 theres幾個其他語法選項 –

2

使用SqlConnectionStringBuilder。將DataSource屬性分配給要連接的服務器名稱。當您想要打開連接時,從構建器中提取ConnectionString。這保證了格式正確的連接字符串。

一般而言,使用IP的做法很糟糕。使用計算機名稱。

ping測試與連接無關。 SQL連接可以使用與TCP/IP無關的協議(例如共享內存)。 Ping可能會失敗,具體取決於各種corpnet ICMP設置。 Ping可以成功,但連接可能會因防火牆和IPSec規則而失敗。 TCP/IP連接不保證T-SQL連接。