连接到另一台机器上的特定SQL Server实例

3
我正在尝试使用Linq DataContext连接到一个SQL Server 2008 R2 Express数据库。数据库引擎在本地网络中的另一台机器上运行。我们目前使用SQL身份验证。SQL Server已设置为允许远程连接。
我的连接字符串如下,并且可以正常工作。我没有指定实例,但它是唯一的,所以我猜它是默认选择的:
Data Source=192.168.1.50;Initial Catalog=DbName;User ID=SomeUser;Password=SecretPassword;

我也在本地安装了相同的引擎,这个连接字符串也有效:

Data Source=localhost;Initial Catalog=DbName;User ID=SomeUser;Password=SecretPassword;

这个也是如此,本地连接:

Data Source=.\SQLEXPRESS;Initial Catalog=DbName;User ID=SomeUser;Password=SecretPassword;

如果远程计算机上运行了多个引擎实例,我想特别指定一个实例怎么办?

Data Source=192.168.1.50\SQLEXPRESS;Initial Catalog=DbName;User ID=SomeUser;Password=SecretPassword;

上述连接字符串导致以下错误:

连接数据库时出错:在建立与 SQL Server 的连接时发生了与网络相关的或特定于实例的错误。找不到服务器或无法访问。请验证实例名称是否正确,并确认 SQL Server 已配置为允许远程连接。(提供程序:SQL Network Interfaces,错误:26 - 无法定位指定的服务器/实例)

为什么这不起作用?我找不到任何示例连接到远程数据库引擎上的特定实例的连接字符串。


尝试查看如何通过NamePipes配置SQL Server,或者像这样ping该IP地址ping -a 192.168.1.50并使用返回的名称作为数据源。另外,我想到了一些事情...您还需要在连接字符串中包含远程数据库服务器的默认端口号。 - MethodMan
2个回答

1

尝试使用以下连接字符串进行远程连接:

Data Source=192.168.1.50\SQLEXPRESS,1433;Network Library=DBMSSOCN;Initial Catalog=DbName;User ID=SomeUser;Password=SecretPassword;

如果使用防火墙,需要打开端口1433。同时在SQL Server Management Studio中尝试启用对DbName的远程连接。

0
即使有IP地址,您仍必须指定实例名称。
例如,
数据源=192.168.1.50\SQLEXPRESS
是您最佳的选择。
防火墙。您可能需要打开端口号。但更重要的是,您可能需要打开程序名称。
请注意本文:

http://technet.microsoft.com/en-us/library/ms175043.aspx

请注意文章中的这个区域:

In the Program dialog box, select This program path. Click Browse, and navigate to the instance of SQL Server that you want to access through the firewall, and then click Open. By default, SQL Server is at C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn\Sqlservr.exe. Click Next.

另外:

我喜欢使用这个程序来“ping”我的机器和端口。重点在于“和端口”。

http://www.microsoft.com/en-us/download/details.aspx?id=24009

我保留那个小工具用于处理连接问题的基本调试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接