如何通过 tcp/ip 为远程数据库指定链接服务器?

Ale*_*win 6 sql-server sql-server-2008-r2 linked-server

我有一个在 IAAS 提供程序上运行的远程数据库,我需要能够从我的本地工作站执行联合查询。我遇到了麻烦,因为当我尝试创建链接时,它试图使用命名管道进行连接。

我使用 SQL Server Native Client 10 创建了一个系统 DSN,并向其提供 IP、数据库、用户和密码。测试了它,它很好。

  1. 转到链接服务器并创建新服务器。
  2. 指定名称“MAIN”
  3. 在组合框中选择 SQL Server Native Client 10
  4. 在产品名称字段中输入 SQL Server
  5. 在数据源字段中输入我的 DSN 名称
  6. 在提供者名称字段中输入 SQLNCLI10
  7. 在目录字段中输入我的数据库名称
  8. 转到安全选项并指定我的本地到远程登录配对。

单击“确定”后,我收到一条错误消息,提示它找不到服务器,并显示它正在尝试使用命名管道。

我应该怎么做才能纠正这个问题?

spa*_*dba 8

我看不出您应该使用 DSN 的理由。直接使用 SQL Server Native Client 创建链接服务器:

EXEC master.dbo.sp_addlinkedserver
    @server     = N'MAIN',
    @srvproduct = N'SQLServ', -- it’s not a typo: it can’t be “SQLServer”
    @provider   = N'SQLNCLI', 
    @datasrc    = N'I .P_Address';
Run Code Online (Sandbox Code Playgroud)

然后您可以创建本地/远程登录对:

-- Pair local and remote logins
EXEC master.dbo.sp_addlinkedsrvlogin
    @rmtsrvname  = N'MAIN',
    @useself     = N'False',
    @locallogin  = N'Local_user_name',
    @rmtuser     = N'Remote_user_name',
    @rmtpassword = N'Remote_password';v
Run Code Online (Sandbox Code Playgroud)