2013-12-13 39 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。 –

相关问题