Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 添加链接的SQL server时遇到问题_Sql Server_Linked Server - Fatal编程技术网

Sql server 添加链接的SQL server时遇到问题

Sql server 添加链接的SQL server时遇到问题,sql-server,linked-server,Sql Server,Linked Server,我正在尝试从远程SQL Server中提取数据。我可以使用SQL身份验证访问远程服务器;我在sp_addlinkedserver中使用相同的凭据时运气不佳 我正在尝试这样的事情: Exec sp_dropserver 'Remote', 'droplogins' go EXEC sp_addlinkedserver @server='Remote', @srvproduct='', @provider='SQLNCLI', @datasrc='0.0.0.0'

我正在尝试从远程SQL Server中提取数据。我可以使用SQL身份验证访问远程服务器;我在sp_addlinkedserver中使用相同的凭据时运气不佳

我正在尝试这样的事情:

Exec sp_dropserver 'Remote', 'droplogins'
go

EXEC sp_addlinkedserver   
   @server='Remote', 
   @srvproduct='',
   @provider='SQLNCLI', 
   @datasrc='0.0.0.0'

EXEC sp_addlinkedsrvlogin
    @useself='FALSE',
    @rmtsrvname='Remote',
    @rmtuser='User',
    @rmtpassword='Secret'

Select Top 10 * from Remote.DatabaseName.dbo.TableName
以下是我得到的:

OLE DB provider "SQLNCLI" for linked server "Remote" returned message "Login timeout expired". OLE DB provider "SQLNCLI" for linked server "Remote" returned message "An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections.". Msg 53, Level 16, State 1, Line 0 Named Pipes Provider: Could not open a connection to SQL Server [53]. 链接服务器“远程”的OLE DB提供程序“SQLNCLI”返回消息 “登录超时已过期”。 链接服务器“远程”的OLE DB提供程序“SQLNCLI”返回消息 “建立与服务器的连接时出错。 连接到SQL Server 2005时,此故障可能是由 在默认设置下,SQL Server不允许远程 联系。”。 味精53,16级,状态1,第0行 命名管道提供程序:无法打开与SQL Server的连接[53]。 同样,我可以使用这些确切的凭据直接访问服务器(在SQL Management Studio中),因此我的网络或凭据没有问题


我在网上看到的大多数示例似乎都涉及Windows域帐户,而不是SQL安全登录。这不适用于SQL身份验证吗?

它适用于SQL身份验证。事实上,这更容易,因为如果使用SQL身份验证,就不必设置Kerberos

您的错误消息有一点让人困惑,您的地址是IP地址:123.45.678.90

您的错误消息正在谈论命名管道。这可能是个线索吗


您不必通过TSQL中的服务器的IP地址来引用它。如果添加指向远程服务器的名称,则可以提供更合理的名称。按IP地址引用它显然不令人满意。

如果指定IP地址时命名管道出现故障,请尝试在IP地址前加上“tcp:”前缀,看看是否有助于将其设置在正确的路径上。

由于SMS GUI向导中添加链接服务器的一行说明,解决了这个问题:
“如果选择了SQL Server,则链接的服务器名称也是服务器的网络名称。”

我认为链接服务器的名称只是一个任意的别名

这就像一个符咒-这是一个遗憾,我必须键入IP(括号中)每次我想使用这个链接服务器,但你有它

Exec sp_dropserver '0.0.0.0', 'droplogins'
go

EXEC sp_addlinkedserver   
    @server='0.0.0.0', 
    @srvproduct='',
    @provider='SQLNCLI', 
    @datasrc='0.0.0.0'

EXEC sp_addlinkedsrvlogin
    @useself='FALSE',
    @rmtsrvname='0.0.0.0',
    @rmtuser='user',
    @rmtpassword='secret'
go

Select Top 10 * from [0.0.0.0].DatabaseName.dbo.TableName

sp_配置“临时分布式查询”,1

下一个

使用覆盖重新配置

已选中SQL表面积配置-->数据库引擎-->远程连接-->本地和远程连接-->应同时使用TCP/IP和命名管道选项 (如果没有,请选择该选项并重新启动)

这必须解决问题 链接服务器“远程”的OLE DB提供程序“SQLNCLI”返回消息 “建立与服务器的连接时出错。 连接到SQL Server 2005时,此故障可能是由 在默认设置下,SQL Server不允许远程
连接。“。

为了解决上述问题,我修改了链接服务器定义,专门指定TCP:

EXEC sp_addlinkedserver   
    @server='TEST_LINK', 
    @srvproduct='',
    @provider='SQLNCLI', 
    @datasrc='tcp:0.0.0.0'

EXEC sp_addlinkedsrvlogin
    @useself='FALSE',
    @rmtsrvname='TEST_LINK',
    @rmtuser='user',
    @rmtpassword='secret'
这对我有效。此方法还允许我为远程服务器指定非标准端口:

EXEC sp_addlinkedserver   
    @server='TEST_LINK', 
    @srvproduct='',
    @provider='SQLNCLI', 
    @datasrc='tcp:0.0.0.0,1111'

我希望这会有所帮助

有时协议已启用,并且外围区域配置允许远程连接,但自配置设置后SQL Server Browser服务尚未重新启动。这意味着配置未处于活动状态

如果您的配置设置看起来都正确,请尝试重新启动SQL Server Browser作为故障排除步骤


迈克

这是一个有趣的想法。如果我输入一个伪造的IP地址,或者“fooo”,我会得到同样的结果“在@datasrc parameter.wow中,这太糟糕了。你确定没有名称解析问题?不确定你的意思-没有与DB服务器关联的域名,只有一个IP地址。是的,我现在也有同样的问题。我试图通过指定SQLOLE(或其他)作为提供程序并给它一个连接字符串来解决这个问题,在这种情况下@server实际上是一个任意的逻辑名称。。。但这在生产机器上并不太合适(我忘记了原因)。因此,我返回到这个方法,并使用感兴趣的表上的视图抽象出物理位置,到目前为止,这已经奏效了。服务器和rmtserver实际上只是别名。它们不必匹配IP地址或DNS服务器名称。只有datasrc才是重要的。对于那些希望通过域名与@datasrc='mydomain.com交换@datasrc='tcp:0.0.0'的人来说,没有其他帖子那样的服务器。