1

我正在编写一个 perl 脚本,其中我必须关闭我的 mssql 服务器,执行一些操作,然后我必须重新启动它。我知道一种方法是使用 netstat 停止服务,但我不能使用它。所以我尝试安装 DBI 和 DBD::ODBC 模块。更多信息:从 perl 脚本 DBI 关闭 MSSQL 服务器 但是当我尝试使用此命令关闭服务器时

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

这对我不起作用:我收到了社区的回复

SHUTDOWN 权限分配给sysadmin 和 serveradmin固定服务器角色的成员,它们不可转让。我认为它不像(希望)perl 是使用此权限运行的。

那么请告诉我有没有办法以这些用户的身份运行上述命令?或者除此之外我还能做什么。请注意,我有一个约束,不能简单地将其作为 Windows 服务停止。

4

1 回答 1

0

如果脚本是通过网络浏览器执行的,那么执行脚本的用户将由网络服务器定义。摆弄这个用户可能不是一个好主意。让事情保持原样。

您可以做的是创建一个由特权用户在与 CRON 一致的基础上运行的 Perl 脚本。

CRON 运行的此脚本可以检查特定内容,例如由脚本编写的文件,其中执行脚本的用户具有较少的权限。

所以它的工作方式如下:

  1. 您通过浏览器执行 browser.cgi 以执行特定任务。

  2. browser.cgi 将指令写入文件。

  3. 每 1 分钟 priveleged.cgi 通过 CRON 执行。(root用户可以执行priveleged.cgi)

  4. priveleged.cgi 读取 browser.cgi 编写的指令文件,并根据指令启动和停止服务。

于 2013-10-17T20:21:10.550 回答