Sql server 是否可以使用管理员权限或作为特定用户执行perl脚本?

Sql server 是否可以使用管理员权限或作为特定用户执行perl脚本?,sql-server,perl,dbi,Sql Server,Perl,Dbi,我正在编写一个perl脚本,其中我必须关闭mssql服务器,执行一些操作,然后重新启动它。我知道有一种方法是使用netstat停止服务,但我不能使用它。所以我试着安装DBI和DBD::ODBC模块。 更多信息请点击此处: 但是当我试图用这个命令关闭我的服务器时 $dbh->prepare("SHUTDOWN WITH NOWAIT "); 这对我不起作用: 我得到了社区的回应 关闭权限被分配给固定服务器角色的sysadmin和serveradmin的成员,并且它们不可转移。我认为它不像(

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

$dbh->prepare("SHUTDOWN WITH NOWAIT ");
这对我不起作用: 我得到了社区的回应

关闭权限被分配给固定服务器角色的sysadmin和serveradmin的成员,并且它们不可转移。我认为它不像(希望)Perl使用此权限运行。


那么,请告诉我,有没有一种方法可以作为这些用户运行上述命令?或者除了这个我还能做什么。请注意,我有一个约束,不能简单地将其作为windows服务停止。

如果脚本通过web浏览器执行,则执行脚本的用户将由web服务器定义。摆弄这个用户可能不是个好主意。保持现状就行了

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

CRON运行的这个脚本可以检查特定的内容,比如由脚本编写的文件,其中执行脚本的用户拥有较少的权限

因此,它的工作方式如下:

  • 您可以通过浏览器执行browser.cgi来执行特定任务

  • browser.cgi将指令写入文件

  • 每1分钟priveleged.cgi通过CRON执行一次。(根用户可以执行priveleged.cgi)

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


  • 您不想将当前用户添加到这两个组中的任何一个?我正在使用已经是sysadmin成员的“sa”用户执行此脚本。您作为谁连接到数据库?DBI->connect语句是什么样子的?正如我在中所评论的,在停止SQL Server之后,如何再次启动它?您需要正确的Windows权限才能启动服务,因此这实际上是一个关于启动和停止Windows服务的问题。仅仅因为您有权在SQL Server中运行
    SHUTDOWN
    ,并不意味着您有权启动SQL Server服务:
    SHUTDOWN
    需要SQL Server权限,但启动服务需要Windows权限。@MichaelGarder
    sysadmin
    serveradmin
    是SQL Server,它们不是Windows组。