В работе возможна ситуация, когда нет доступа к административному терминалу сервера субд и нет физического доступа к нему. Но необходимо выполнить определенные комнды на сервере. Случай из практики - sql сервер и сервер 1С установлены на одной машине и необходимо перезапустить службу сервера 1С. Или необходимо создать определенное задание в таск-менеджере операционной системы и т.д.. В ряде случаев (зависит от настроек сервера) при наличии логина к sql server (с 2005) с ролью sysadmin, например "sa", можно получить доступ к командной строке системы и выполнять консольные команды с высокими привилегиями. Ниже описаны действия:
На рабочей станции запускается managment studio и выполняется запрос
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO
Подробнее http://technet.microsoft.com/ru-ru/library/ms190693.aspx http://technet.microsoft.com/ru-ru/library/ms175046.aspx
Нам важно, что "Процесс Windows, порожденный процедурой xp_cmdshell, имеет те же права защиты, что и учетная запись службы SQL Server." Теперь, в большинстве случаев, появится возможность выполнять команды системы сервера с высокими привилегиями. По соображениям безопасности после необходимо отключать данный параметр установкой значения 0.
Примеры запросов с полезными командами:
* копирование файла между каталогами сервера
EXEC xp_cmdshell 'copy "C:\test\logcfg.xml" "C:\Program Files\1cv81\bin\conf\logcfg.xml" ';
* удаление файла на сервере
EXEC xp_cmdshell 'del "C:\Program Files\1cv81\server\srvribrg.lst" ';
* удаление каталога "reg_1541" вместе с его содержимым
EXEC xp_cmdshell 'rmdir /s /q "C:\Program Files\1cv81\server\reg_1541"';
* просмотр запущенных служб
EXEC xp_cmdshell 'net start';
* просмотр процессов
EXEC xp_cmdshell 'tasklist';
Если сервер 1С установлен на том же сервере:
* остановка службы сервера 1С
EXEC xp_cmdshell 'net stop "1C:Enterprise 8.1 Server (x86-64) Agent"';
* запуск службы сервера 1С
EXEC xp_cmdshell 'net start "1C:Enterprise 8.1 Server (x86-64) Agent"';
* остановка через ragent (запуск -start)
EXEC xp_cmdshell '"C:\Program Files\1cv81\bin\ragent.exe" -stop';