В работе возможна ситуация, когда нет доступа к административному терминалу сервера субд и нет физического доступа к нему. Но необходимо выполнить определенные комнды на сервере. Случай из практики — 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: estlogcfg.xml» «C:Program Files1cv81inconflogcfg.xml» ‘;
* удаление файла на сервере
EXEC xp_cmdshell ‘del «C:Program Files1cv81serversrvribrg.lst» ‘;
* удаление каталога «reg_1541» вместе с его содержимым
EXEC xp_cmdshell ‘rmdir /s /q «C:Program Files1cv81server
eg_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 Files1cv81in
agent.exe» -stop’;
Копитан Очевидность
(1) Добрый день, КЭП )
(1) fishca, (2) avasl,
Ну чего вы так сразу? Между прочим — это ж просто дырища в системе безопасности! Я в свое время надругался над серверами соседнего филиала, получаешь доступ к операционной системе и ты король 😉
(3) это известно любому грамотному администратору SQL сервер.
(2) КЭП, если ты не понял, как раз ты 😉
(4) «Горшочек, не вари» 🙂
(4) fishca,
пардон, если вы имели в виду MS SQL сервер, то я говорил о DB Oracle.
К тому же этот пост полезен программистам… смотришь научат уму разуму не пуганных админов MS SQL.
Хотя часто бывает, что роль админа приходится выполнять и программисту. Так, что не стоит умничать сгоряча.
Тоже мне открытие: эта фича была известна ещё со времен MS SQL 7.0
Защита стандартна: доступ к базам 1С только для отдельной учетной записи с типом db_owner, запрет доступа к другим базам. Изначально при создании базы этот пользователь имеют только привилегии «Database Creator». Сервер 1С под выделенной учетной записью, например: «V8ServerUser@yourdomain», не имеющей никаких прав в домене.
Добрый день!
Тема весьма актуальная.
А как на счет обратной ситуации,
выполнение запроса t-sql средствами клиента 1С
(клиент-сервер без доступа к СУБД)?
С уважением