У меня возникают проблемы при попытке вызвать хранимую процедуру MySQL (5.0.77) с параметрами через связанный сервер (SQL Server 2005) с использованием синтаксиса OPENQUERY.
Хранимая процедура 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.
Любая помощь будет принята с благодарностью!