1

我正在做一个连接到位于同一网络中的数据库的应用程序。DBMS 是 SQL Server 2005,我想测试ping到 IP 地址,然后通过 ado.net 测试与数据库的连接:

 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"); }

如您所见,我想通过它的地址 ip 连接到数据库,我测试 ping 并且它可以工作,但是当我在我的服务器中测试与我的数据库的连接时它不工作

  1. 连接字符串中的错误是什么?
  2. 如何更改连接字符串以不连接到我自己的数据库,而是连接到具有指定地址 ip(Windows 身份验证)的其他数据库?
4

2 回答 2

2

使用SqlConnectionStringBuilder. 将该属性分配DataSource给您要连接的服务器名称。ConnectionString当您想要打开连接时,从构建器中提取。这保证了格式正确的连接字符串。

一般来说,使用 IP 是一种不好的做法。使用计算机名称。

ping 测试与连接性无关。SQL 连接可以使用与 TCP/IP 无关的协议(例如共享内存)。Ping 可能会失败,具体取决于各种公司网络ICMP设置。Ping 可以成功,但根据防火墙和 IPSec 规则,连接可能会失败。TCP/IP 连接不保证 T-SQL 连接。

于 2013-04-15T10:34:31.293 回答
1

这样的事情可能会有所帮助

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

在您上面.的连接字符串中表示 localhost

正如@RemusRusanu 所说,IP 地址被认为是糟糕的形式,但上述内容将起作用。主机名会更好

于 2013-04-15T10:32:20.560 回答