我正在尝试使用此代码创建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
我错过了什么?
我还试图搜索一些帖子,但没有运气。
以下是其他一些细节:
这是来自链接服务器的图像,表中没有来自右侧区域的列:
这是来自普通服务器的图像,右侧区域的选项是扩展的附加符号,但链接服务器没有任何内容:
任何建议都将受到赞赏。
感谢。
答案 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')