如何创建具有非默认端口的联接服务器

12

我想在 MS SQL Server 2000 中创建一个到运行在端口 x 上(而不是默认端口1433)的 MS SQL 2005 Server 的 Linked Server,但它无法工作,因为我无法在任何地方指定端口!

使用 sqlcmd(指定端口 x),我可以连接到服务器,但我无法将其设置为 Linked Server。

如何才能做到这一点?

5个回答

14

另一种实现方法(假设您已经在SQL Server中设置了8080)是使用以下代码:

EXEC sp_addlinkedserver 'myserver', '', 'SQLNCLI', 'xx.xx.xx.xx,8080'

EXEC sp_addlinkedsrvlogin 'myserver', 'FALSE', NULL, 'user', 'pwd'

同样,您可以在 SSMS UI 中使用相同的方式指定端口,在逗号后面。 - Tropin Alexey

9
在新的联接服务器对话框中,选择“其他数据源”,选择“Microsoft OLE DB Provider for SQL Server”作为您的提供程序名称,然后将以下内容用作您的提供程序字符串:
Data Source=192.168.1.100,1433;Network Library=DBMSSOCN;Initial Catalog=yourdbname;User ID=username;Password=password;

将IP和“1433”替换为您的IP地址和端口号。

有关连接字符串的更多信息:http://support.microsoft.com/kb/238949


可以的!不过你知道是否有一种方法可以使用SQLNCLI提供程序使其工作吗? - mjv
1
我自己没有尝试过,但你可以尝试使用“SQL Server配置管理器”创建一个别名,在那里定义IP和端口号。然后在你的SQLNCLI连接字符串中使用该别名。缺点是每个客户端机器都需要这样做。如果只有两个链接的服务器,应该可以工作。 - Shane Castle

7
根据Shane的建议,我添加了一个别名。
(SQL Server 2008 R2):
1.打开SQL Server配置管理器
2.展开“SQL Server配置管理器(本地)”
3.展开“SQL Native Client 10.0 Configuration(32位)”
4.点击“别名”
5.在右侧别名列表中右键单击,并选择“新建别名”
6.“别名名称”是您想要引用链接服务器的内容。
7.“端口号”是您的非默认端口。
8.“协议”取决于情况,但您很可能可以将其保留为“TCP/IP”。
9.“服务器”是您要连接的服务器的地址(不包括端口)。
(对于“SQL Native Client 10.0 Configuration”重复上述步骤(减去“32位”文本))
通过这种方式添加别名,使我能够添加一个服务器类型为“SQL Server”的链接服务器,而无需配置提供程序选项等。

1
请注意,四部分查询将类似于以下内容:
  SELECT * FROM [SQLSERVER,14333].[DATABASE].[dbo].[Table1]

1

今天我也不得不这样做(添加具有非默认端口的链接服务器)。在我的情况下,是将 SQL Server 2014 链接服务器添加到 SQL Server 2016。

使用 SQL Server Management Studio 的步骤:

  1. 打开 SSMS 并转到“服务器对象”>“链接服务器”>“新建链接服务器”
  2. 对于链接服务器,请使用此格式:ip-address-of-linked-server\instance-name,non-default-port 或者 192.168.10.5\dev-sql,25250。仅当该实例不是目标链接服务器上的默认实例时才需要实例名称。此外,如果链接服务器位于您的本地网络上,则可以用主机名替换 IP 地址。

  3. 选择“SQL Server”作为服务器类型

  4. 使用“安全性”选项卡添加所需的任何凭据以进行连接
  5. 使用与 SQLDBA 指定的格式查询新服务器 above

example screenshot

使用T-SQL执行同样的操作:

EXEC master.dbo.sp_addlinkedserver @server = N'192.168.10.5\dev-sql,25250', @srvproduct=N'SQL Server'

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'192.168.10.5\dev-sql,25250',@useself=N'False',@locallogin=NULL,@rmtuser=N'my_username',@rmtpassword='my_pswd'


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