说我要启动MSSSQLSERVER服务。这是在PowerShell中通过Start-Service
cmdlet完成的。
有时,由于以下示例中的错误,服务无法启动。
我感兴趣的是失败的根本原因,而start-service
似乎正在返回powershell异常,这是一个不包含特定于错误的信息的通用包装。
PS C:\Users\Administrator> start-service MSSQLSERVER start-service : Failed to start service 'SQL Server (MSSQLSERVER) (MSSQLSERVER)'. At line:1 char:1 + Start-Service MSSQLSERVER + ~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OpenError: (System.ServiceProcess.ServiceController:ServiceController) [Start-Service], ServiceCommandException + FullyQualifiedErrorId : StartServiceFailed,Microsoft.PowerShell.Commands.StartServiceCommand
要找出问题的根本原因,我们必须求助于net start
命令,这使我们回到了PowerShell应当忘记的旧时代。
C:\Users\Administrator>NET START MSSQLSERVER The SQL Server (MSSQLSERVER) service is starting. The SQL Server (MSSQLSERVER) service could not be started. A service specific error occurred: 17051. More help is available by typing NET HELPMSG 3547.
是否可以查看该服务引发的潜在错误?
答案 0 :(得分:3)
如 I.T Delinquent 所述,可以在异常中找到错误,但是在这种情况下,该错误将存储在内部异常中:
$ErrorActionPreference = "Stop"
try
{
Start-Service -Name "MSSQLSERVER"
}
catch
{
$msg = @()
$err = $_.Exception
do (
$msg += $err.Message
$err = $err.InnerException
) while ($err)
Write-Verbose "Failed to start service: $($msg -join ' - ')"
}
答案 1 :(得分:0)
我认为您可以检查一下link
但是基本上,您可以使用Try / Catch语句并从错误中输出消息,如下所示:
try{
Start-Service MSSQLSERVER -ErrorAction Stop
}catch{
$PSItem.Exception.Message
}