我在通過鏈接服務器嘗試調用具有參數的MySQL(5.0.77)存儲過程時遇到問題(SQL Server 2005)使用OPENQUERY語法。使用OPENQUERY語法通過鏈接服務器(SQL Server 2005)調用MySQL存儲過程(帶參數)問題
MySQL的存儲過程返回結果集,當我使用「EXEC ... AT ......」語法調用工作正常,如..
EXEC('CALL my_stored_proc(''2009-10-07'',''2009-10-07'');') AT MySQLSERVER;
的使用「EXEC的限制... AT ...'表示我無法將結果集插入到SQL Server中的臨時表中,這最終是我想要做的。這使我嘗試OPENQUERY語法...
SELECT * FROM OPENQUERY(MySQLSERVER,'CALL my_stored_proc(''2009-10-07'',''2009-10-07'');')
...但是這個失敗,並返回...
Msg 7357, Level 16, State 2, Line 1
Cannot process the object "CALL my_stored_proc(''2009-10-07'',''2009-10-07'');". The OLE DB provider "MSDASQL" for linked server "MySQLSERVER" indicates that either the object has no columns or the current user does not have permissions on that object.
這是奇怪的,因爲該「EXEC ... AT ......'電話沒有抱怨權限。下面的調用都做工精細...
EXEC('SHOW TABLES;') AT MySQLSERVER;
SELECT * FROM OPENQUERY(MySQLSERVER,'SHOW TABLES;');
CREATE TABLE #tmpTest (
[table] varchar(255) null
);
INSERT INTO #tmpTest ([table])
SELECT * FROM OPENQUERY(MySQLSERVER,'SHOW TABLES;');
SELECT * FROM #tmpTest;
DROP TABLE #tmpTest;
所以我的問題是,如何才能讓一個MySQL存儲過程的調用,通過鏈接服務器,並將結果存儲在一個臨時表中的SQL Server設置?通過使用'EXEC ... AT ...'語法,或者在使用OPENQUERY語法時解決對象/權限錯誤。
任何幫助將不勝感激!