Могу ли я выполнять «локальные» системные вызовы с помощью запроса?

#sql-server #sql-server-2008

#sql-server #sql-server-2008

Вопрос:

В настоящее время я нахожусь на хосте (A), подключаюсь к базе данных MSSQL на сервере (B). Когда я выполняю системный вызов, например

 EXEC xp_cmdshell 'Systeminfo' GO
  

из MS SQL 2008 он всегда возвращает мне системную информацию от клиента (A), на котором я в настоящее время запускаю свой инструмент управления SQL.
Есть ли возможность запускать системные вызовы, которые будут возвращать мне информацию с сервера (B)?

Комментарии:

1. К какому экземпляру SQL Server вы подключены окончательно? Он вернет свою информацию

2. Я использую SQL manager от своего клиента для подключения к экземпляру, размещенному на моем сервере, ваше предложение заставило меня понять, что я получу больше информации, если закрою экземпляр на своем клиенте. Очевидно, что EXEC автоматически попытается подключиться к localhost, и если он не работает, он попытается включить его.

Ответ №1:

С тех пор, как я задал этот вопрос, я перезагрузился и снова попробовал все шаги: 1. Выключите локальный сервер 2. Подключитесь к внешнему серверу 3. Включите команду XP_CMDSHELL для внешнего сервера с помощью

  -- To allow advanced options to be changed.  
 EXEC sp_configure 'show advanced options', 1;  
 GO  
-- To update the currently configured value for advanced options.  
RECONFIGURE;  
GO  
-- To enable the feature.  
EXEC sp_configure 'xp_cmdshell', 1;  
GO  
-- To update the currently configured value for this feature.  
RECONFIGURE;  
GO  
  

А затем просто запустите

 EXEC xp_cmdshell 'Systeminfo';
GO
  

Странно, что это работает сейчас, потому что я не мог заставить его работать последние недели.