2013-05-02 3 views
0

Я пишу скрипт perl, в котором Я должен выключить мой сервер mssql, выполнить некоторую операцию, а затем я должен перезапустить его. Я знаю, что один способ - использовать netstat чтобы остановить службу, но я не могу ее использовать. Так что я попытался установить DBI и DBD :: ODBC module.I'm возможность подключения и выполнения запросов на следующий кодЗавершение работы сервера MSSQL из Perl-скрипта DBI

use DBI; 
my $data_source = q/dbi:ODBC:AUTOMATION_WOW64/; 
my $user = q/pa/; 
my $password = q/DCE/; 

# Connect to the data source and get a handle for that connection. 
my $dbh = DBI->connect($data_source, $user, $password) 
or die "Can't connect to $data_source: $DBI::errstr"; 
my $str=$dbh->prepare("select SERVERPROPERTY('edition')"); 
$str->execute(); 
my @row; 
while (@row = $str->fetchrow_array) { # retrieve one row 
print join(", ", @row), "\n"; 
} 

, но даже после поиска много я не можите найти любой запрос с использованием whch я могу shutdown мой сервер. Просто хотел узнать, возможно ли завершить работу сервера из SQL-запроса. я нашел один для сервера MySQL

$rc = $dbh->func('shutdown', 'admin'); 

по этой ссылке http://metacpan.org/pod/DBD::mysql пожалуйста, скажите мне, если что-то похожее на это существует для MSSQL сервера.

+1

Вы можете просто остановить службу SQL Server для Windows? Проблема с командой SQL SHUTDOWN заключается в том, что системный администратор SQL Server может закрыть сервер, а затем обнаружить, что он не может перезапустить его, потому что у него нет правильных * разрешений Windows * для запуска службы. Поэтому, вероятно, лучше рассмотреть это как вопрос службы Windows, а не SQL Server. – Pondlife

ответ

0

Там есть команда SQL называется SHUTDOWN - more info here

+0

Я тоже пробовал это раньше, но я получаю эту ошибку при выполнении этой команды «$ dbh-> prepare (« SHUTDOWN [WITH NOWAIT] »); Ошибка DBD :: ODBC :: st: [Microsoft] [Собственный клиент SQL Server 10.0] [SQL Server] Неверный синтаксис рядом с «WITH NOWAIT». (SQL-42000) – decoder

+2

@decoder это «SHUTDOWN WITH NOWAIT», но разрешения SHUTDOWN назначаются членам фиксированных ролей сервера sysadmin и serveradmin, и они не могут быть переданы. Я бы счел это непохожим (надеюсь), что perl работает с этими правами. – bummi