我正在尝试使用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”的列信息。
普通选择工作正常,但选择进入有错误。
由于
答案 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