链接服务器错误无效使用OLE DB提供程序的模式或目录" SQLNCLI10"对于链接服务器" LINK71"

时间:2017-05-23 08:36:56

标签: sql-server

我正在尝试使用此代码创建Link Server

EXEC master.dbo.sp_addlinkedserver @server = N'LINK71', @srvproduct=N'serverInstance', @provider=N'SQLNCLI', @datasrc=N'serverInstance', @catalog=N'mydb'

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'LINK71',@useself=N'False',@locallogin=NULL,@rmtuser=N'myuname',@rmtpassword='mypassword'

GO

它已成功创建,但我的问题是,当我开始运行链接服务器时,它会返回上面的错误:

SELECT top 1 [Col1]
      ,[Col2]
      ,[Col3]
  FROM [LINK71].[DB].[dbo].[Tbl_sample]
GO

我错过了什么?

我还试图搜索一些帖子,但没有运气。

以下是其他一些细节:

这是来自链接服务器的图像,表中没有来自右侧区域的列:

enter image description here

这是来自普通服务器的图像,右侧区域的选项是扩展的附加符号,但链接服务器没有任何内容:

enter image description here

任何建议都将受到赞赏。

感谢。

1 个答案:

答案 0 :(得分:1)

来自BOL:sp_addlinkedserver (Transact-SQL)

  

[@ catalog =]'目录'是否在连接时使用目录   对OLE DB提供程序。 catalog是sysname,默认值为   空值。目录作为DBPROP_INIT_CATALOG属性传递给   初始化OLE DB提供程序。定义链接服务器时   对于SQL Server实例,目录是指默认值   链接服务器映射到的数据库。

因此,在定义链接服务器时,您根本不使用@catalog (这样你可以稍后从链接服务器中引用任何数据库)然后你可以使用你的语法,如

[LINK71].[DB].[dbo].[Tbl_sample]

或者你在链接服务器定义中使用@catalog,但是你不能使用不是mydb的其他数据库(来自你的@ catalog = N' mydb')