【问题标题】:Possible to use "INSERT INTO @VARIABLE EXEC() AT LINKED_SERVER" syntax? (SQL Server 2005)可以使用“INSERT INTO @VARIABLE EXEC() AT LINKED_SERVER”语法吗? (SQL Server 2005)
【发布时间】:2010-11-04 20:46:19
【问题描述】:

我正在尝试在链接服务器上执行查询,但我需要本地结果。

DECLARE @test TABLE
(
greeting CHAR(5)
)

INSERT INTO @test
EXEC('select ''hello'' as greeting')

SELECT * FROM @test

使用EXEC()INSERT INTO,但显然查询是在本地执行的。

DECLARE @test TABLE
(
greeting CHAR(5)
)

INSERT INTO @test
EXEC('select ''hello'' as greeting') AT LINKED_SERVER

SELECT * FROM @test

根本不工作。

SELECT greeting FROM OpenQuery(LINKED_SERVER,'SELECT''hello'' AS greeting')

完全实现了我想要的,但我需要使用动态字符串,唯一的方法是让我的整个查询变成一个巨大的字符串并将它放入一个 EXEC(),我没有因为真的很丑所以想做....

感谢您的帮助!

【问题讨论】:

  • 您的中间版本在一个简单的测试用例中适用于我。您遇到的具体问题是什么?
  • 表示服务器不支持分布式事务。我可能应该提到链接服务器不是另一个 SQL Server,而是一个 OLE DB。
  • 但很高兴知道,至少我尝试做的事情可能只是因为语法有效而无法使用 OLE db。
  • @user468341:那是一匹不同颜色的马。

标签: sql sql-server tsql openquery


【解决方案1】:

您可以使用以下内容:

INSERT INTO @test
EXEC('select TOP 1 ''hello'' as greeting FROM LINKED_SERVER.SomeDB.dbo.SysObjects')

假设您实际上不想只得到“你好”这个词......您可能想要做一些事情,比如从表中实际选择一个值,那么上面应该是偶数更可能是您想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 2013-11-01
    相关资源
    最近更新 更多