2013-05-06 20 views
1

我正在寫一個Perl腳本,我必須關閉我的mssql服務器,做一些操作,然後我必須重新啓動它。我知道1種方法是使用netstat來停止服務,但我不能使用那。所以我嘗試安裝DBI和DBD :: ODBC模塊。 這裏更多的信息:Shutdown MSSQL server from perl script DBI 但是,當我使用這個命令是否有可能執行具有管理權限的perl腳本或特定用戶?

$dbh->prepare("SHUTDOWN WITH NOWAIT "); 

這不是爲我工作試圖關閉我的服務器: 我得到了來自社會各界

SHUTDOWN權限分配給該響應sysadmin和serveradmin固定服務器角色的成員,並且它們不可轉讓。我認爲它不像(希望)perl是以這個權利運行的。

那麼請告訴我有沒有辦法以這些用戶身份運行上述命令?或者除此之外我還能做些什麼。請注意,我有一個限制,我不能簡單地將它停止爲Windows服務。

+0

您不想將當前用戶添加到這兩個組中嗎? – 2013-05-06 09:50:53

+0

我正在使用已經是sysadmin成員的「sa」用戶執行此腳本 – decoder 2013-05-06 10:22:09

+0

您是以什麼方式連接到數據庫的?你的DBI-> connect語句是什麼樣的? – Joel 2013-05-06 12:33:50

回答

0

如果通過Web瀏覽器執行腳本,則執行腳本的用戶將由Web服務器定義。擺弄這個用戶可能不是一個好主意。把事情保持原樣。

您可以做的是創建一個由特權用戶與CRON一致運行的Perl腳本。

由CRON運行的此腳本可以檢查特定內容,例如腳本寫入的文件,而腳本執行腳本的用戶權限較小。

所以它可能的工作方式如下:

  1. 您通過瀏覽器執行browser.cgi做一個特定的任務。

  2. browser.cgi將指令寫入文件。

  3. 每隔1分鐘priveleged.cgi通過CRON執行。 (root用戶可以執行priveleged.cgi)

  4. priveleged.cgi讀取文件browser.cgi已經寫入指令並根據指令啓動和停止服務。

相關問題