OPENQUERY进入临时表

时间:2018-03-05 14:25:54

标签: sql-server openquery

我正在尝试使用OPENQUERY从MySQL获取一些数据,但是我需要将结果放到临时表中进行操作。

我尝试了几个例子,但得到了同样的错误:

DECLARE @lastid int = (SELECT MAX(remoteid) FROM cdr)
DECLARE @TSQL varchar(8000)
SELECT  @TSQL = 'SELECT * FROM OPENQUERY([PBXA_MYSQL],''SELECT * INTO #tempcdr FROM asterisk.cdr WHERE id > ''''' + CAST(@lastid as varchar(50)) + ''''''')'
EXEC (@TSQL)

SELECT * FROM #tempcdr

无法从OLE DB提供程序“MSDASQL”获取链接服务器“PBXA_MYSQL”的列信息。

普通选择工作正常,但选择进入有错误。

由于

1 个答案:

答案 0 :(得分:0)

您将OPENQUERY的结果存储到远程服务器上的临时表中,而不是本地服务器上。此外,临时表仅存在于该会话中,作为本地临时表,您需要将其设为全局

要获得结果,您需要将查询更改为:

DECLARE @lastid int = (SELECT MAX(remoteid) FROM cdr)
DECLARE @TSQL varchar(8000)
SELECT  @TSQL = 'SELECT * INTO ##tempcdr FROM OPENQUERY([PBXA_MYSQL],''SELECT * FROM asterisk.cdr WHERE id > ''''' + CAST(@lastid as varchar(50)) + ''''''')'
EXEC (@TSQL)

SELECT * FROM ##tempcdr