Начиная с SQL Server 2012 и выше, вам необходимо описать ожидаемую структуру ответа при использовании OPENROWSETS для вызова процедур, которые в свою очередь вызывают дальнейшие процедуры.
Например, в SQL Server 2008 нижеприведенный SELECT работает для полученияИнформация о задании, которую я использую в моей функции.
SELECT * FROM OPENROWSET(
'sqloledb'
,'server=localhost;trusted_connection=yes'
,'set fmtonly off exec msdb.dbo.sp_help_job')
Однако на SQL Server 2012 и выше это вернет ту же ошибку, что и вы. Чтобы это исправить, нам нужно включить опцию WITH RESULT SETS для описания возвращаемого оператора SELECT. Т.е.
SELECT * FROM OPENROWSET(
'sqloledb'
,'server=localhost;trusted_connection=yes'
,'exec msdb.dbo.sp_help_job WITH RESULT SETS
(
(job_id uniqueidentifier, originating_server nvarchar(30), name sysname, enabled tinyint, description nvarchar(512), start_step_id int, category sysname, owner sysname, notify_level_eventlog int,
notify_level_email int, notify_level_netsend int, notify_level_page int, notify_email_operator sysname, notify_netsend_operator sysname, notify_page_operator sysname, delete_level int,
date_created datetime, date_modified datetime, version_number int, last_run_date int, last_run_time int, last_run_outcome int, next_run_date int, next_run_time int, next_run_schedule_id int,
current_execution_status int, current_execution_step sysname, current_retry_attempt int, has_step int, has_schedule int, has_target int, type int)
)')
По совпадению, приведенный ниже метод указания наборов результатов вызывает ошибку в SQL Server 2008. Но так как вы указали, что работаете в SQL Server 2017, я подозреваю, что если вы опишете выводиспользуя WITH RESULT SETS, запрос должен работать нормально.
Поскольку вы запускаете задание обновления, оно не возвращает значений. Но использование WITH ROWSET NONE делает ваш SELECT FROM OPENROWSET недействительным.
Вы должны иметь возможность использовать
EXEC (@Command) AT <linkedServer>
Если связанный сервер настроен на его разрешение и сервер фактически зарегистрирован как связанный сервер.