2013-05-02 32 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