2013-05-02 49 views
0

我正在写一个Perl脚本,其中我已经关闭了我的mssql服务器,做了一些操作,然后我必须重新启动它。我知道1种方法是使用netstat停止服务,但我不能使用它。 所以我尝试安装DBI和DBD :: ODBC module.I'm能够连接并执行查询通过下面的代码从perl脚本关闭MSSQL服务器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"; 
} 

但即使搜索了很多后,我上无法使用发现有任何查询界河我可以关闭我的服务器。 只是想知道是否有可能从SQL查询关闭服务器。 我这个链接http://metacpan.org/pod/DBD::mysql 请告诉我,如果为MSSQL服务器存在一些类似的发现一个MySQL服务器

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

+1

你能不能停止SQL Server的Windows服务? SQL SHUTDOWN命令的问题在于SQL Server的系统管理员可能会关闭服务器,然后发现他无法重新启动它,因为他没有启动该服务的正确* Windows *权限。所以最好把它当作Windows服务问题而不是SQL Server服务器问题。 – Pondlife 2013-05-02 14:38:43

回答

0

有一个称为SHUTDOWN一个SQL命令 - more info here

+0

我之前也试过这个,但是在执行这个命令时出现这个错误:“$ dbh-> prepare(”SHUTDOWN [WITH NOWAIT]“);” DBD :: ODBC :: st执行失败:[Microsoft] [SQL Server Native Client 10.0] [SQL Server]'WITH NOWAIT'附近的语法不正确。 (SQL-42000) – decoder 2013-05-02 13:09:28

+2

@decoder它是“SHUTDOWN WITH NOWAIT”,但SHUTDOWN权限分配给sysadmin和serveradmin固定服务器角色的成员,并且它们不可转让。我认为它不像(希望)perl是以这个权利运行的。 – bummi 2013-05-02 13:44:10