2016-06-16 32 views
1

我有一台物理服务器运行两个SQL Server实例,一个2008 R2(端口1433)和一个普通2008(端口1444)。从链接的SQL Server中选择特定的列

我有一个链接的服务器设置,下面的查询从2008 R2

SELECT * 
FROM [LINKEDSERVER,1444].[DBNAME].[dbo].[TABLENAME] 

运行正常当我尝试运行此查询我得到的错误由多个部分组成的标识符不能被束缚。

SELECT [LINKEDSERVER,1444].[DBNAME].[dbo].[TABLENAME].[COLUMNNAME] 
FROM [LINKEDSERVER,1444].[DBNAME].[dbo].[TABLENAME] 

任何人都可以请说一说这里发生了什么吗?我假设我有一个简单的语法错误或者其他的东西,但是我可以找到的所有例子都只是Select *,这不是我所需要的。

+0

您是否尝试过在'SELECT'中使用列名称,而不是完全限定它? – Siyual

+0

它必须是完全限定的,因为我的查询跨越多个SQL Server实例,甚至是同一个实例中的多个数据库。我知道这听起来很复杂,但是,由于我不打算进入这里的原因,它必须是这种方式。同义词解决方案适合我。我本来可以使用表别名,但是,我不断地查询这个名称,并且短名称帮助非常大。 – user2625842

回答

0

4级是最深的,你可以去,但如果你想在上面的情况下引用特定的列,你可以使用表别名。在空格中输入空格,然后在表格名称后加上一个字母或缩写缩写。您可以在查询中引用该别名来缓解您的问题。

SELECT abrv.[COLUMNNAME] 
FROM [LINKEDSERVER,1444].[DBNAME].[dbo].[TABLENAME] abrv 

另一种选择,如果你打算通过链接服务器访问了很多的实际的表(https://msdn.microsoft.com/en-us/library/ms187552.aspx)创建同义词,并用它喜欢它是本地表。

+1

只是一个术语宠物peeve - 这些不应该被称为表“缩写”。他们是表*别名*。 – Siyual

+0

好点@Siyual我改变了答案 – Matt

相关问题