我正在使用SQL Server 2008 R2网络版,完全在SQL Management Studio中。我需要进行跨服务器查询,但我的查询总是返回“无效的对象名称”,无论服务器是否已链接。更改服务器名称将返回“找不到服务器”,正如我所期望的那样。
我使用sp_addlinkedserver和sp_dropserver多次添加和删除了链接数据库,检查了sys.Servers表,我尝试了各种查询排列。我的猜测是,它是另一个与链接服务器具有相同的4部分名称语法的功能。
例如,以下返回“无效对象名称”
SELECT TOP 10 * FROM dbtest.Web.dbo.tblProduct -- this is correct
SELECT TOP 10 * FROM dbtest.Web.dbo.tblProductFake
SELECT TOP 10 * FROM dbtest.WebFake.dbo.tblProduct
如果我故意将服务器名称更改为不正确的内容,则返回“无法找到服务器”,如我所料
SELECT TOP 10 * FROM dbtestFake.Web.dbo.tblProduct
SELECT TOP 10 * FROM dbtest1.Web.dbo.tblProduct
SELECT TOP 10 * FROM dbtst.Fake.dbo.tblProduct
查询来自同一数据库的另一个链接服务器返回结果,或返回“OLE DB提供程序”SQLNCLI10“链接服务器”dbx“不包含表”,具体取决于查询是否正确,同样,全部为我期待。
甚至更奇怪的是,我可以让Management Studio在“服务器对象”>之后为我构建查询。 “链接服务器”等,然后单击“脚本表作为SELECT到新查询窗口”,但该查询仍将显示“无效对象名称”。