2013-05-06 50 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已经写入指令并根据指令启动和停止服务。

相关问题