【发布时间】:2012-10-12 17:54:50
【问题描述】:
这让我一整天都想死=D。请帮忙!
场景 1:同一服务器上的两个数据库(A、B)和 A 有三个表。从 B 执行查询。
场景 2:两个 DB 的一个服务器链接到另一个。 (B 有链接 A)和 A 有三个表。从 B 执行查询。
在场景 1(非链接服务器)中:
SET @val = ''
SELECT @val = @val + 'Hello, my name is ' + [name] + '!' + CHAR(10) + CHAR(13)
FROM A.sys.tables
返回: 你好,我的名字是Table1! 你好,我的名字是Table2! 大家好,我叫Table3!
在场景 2(链接服务器)中:
SET @val = ''
SELECT @val = @val + 'Hello, my name is ' + [name] + '!' + CHAR(10) + CHAR(13)
FROM LINKED.A.sys.tables
返回: 大家好,我叫Table3!
为什么这些不同?如果我在链接服务器上使用 openquery(),结果与场景 1 相同。如果可能,我会尽量避免使用 openquery()。谢谢!
【问题讨论】:
-
你能运行并告诉从这个查询返回多少行 EXEC ('SELECT name FROM [A].sys.tables') AT [LINKED]
标签: sql sql-server sql-server-2008