Я загрузил программное обеспечение SQL Server 2008 R2 от Microsoft и работаю над сценарием автоматической установки. Я получаю следующие ошибки (и задание дублирования вставки не случайность, вот как это проявляется для меня)
The following error occurred:
Exception has been thrown by the target of an invocation.
Error result: 1152035024
Result facility code: 1194
Result error code: 43216
Please review the summary.txt log for further details
The following error occurred:
Exception has been thrown by the target of an invocation.
Error result: 1152035024
Result facility code: 1194
Result error code: 43216
Please review the summary.txt log for further details
Microsoft (R) SQL Server 2008 R2 Setup 10.50.1600.01
Это то, что отображается в подробном журнале установки SQL.
2011-02-23 09:53:13 Slp: Running Action: ExecuteInitWorkflow
2011-02-23 09:53:13 Slp: Workflow to execute: 'INITIALIZATION'
2011-02-23 09:53:13 Slp: Error: Action "Microsoft.SqlServer.Configuration.BootstrapExtension.ExecuteWorkflowAction" threw an exception during execution.
2011-02-23 09:53:13 Slp: Microsoft.SqlServer.Setup.Chainer.Workflow.ActionExecutionException: Exception has been thrown by the target of an invocation. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentNullException: Value cannot be null.
2011-02-23 09:53:13 Slp: Parameter name: InstallMediaPath
Надеюсь, кто-нибудь поможет мне разобраться с этим. Вот простая версия моего кода PowerShell.
$arguments = @()
$arguments += "/q"
$arguments += "/ACTION=Install"
$arguments += "/FEATURES=SQL,Tools"
$arguments += "/INSTANCENAME=MSSQLSERVER"
$arguments += "/SQLSVCACCOUNT=`"$NetBIOSDomainName\$SQLServerServiceAccount`""
$arguments += "/SQLSVCPASSWORD=`"$SQLServerServiceAccountPassword`""
$arguments += "/SQLSYSADMINACCOUNTS=`"$NetBIOSDomainName\$SQLSysAdminAccount`""
$arguments += "/AGTSVCACCOUNT=`"$NetBIOSDomainName\$SQLServerAgentAccount`""
$arguments += "/IACCEPTSQLSERVERLICENSETERMS"
Start-Process "$SQLServerSetupLocation\setup.exe" -Wait -ArgumentList $arguments -RedirectStandardOutput error.txt
Я думаю, что моя проблема в том, что я не использовал параметр -WorkingDirectory командлета Start-Process. Файл setup.exe вызывает все виды процессов как часть установки, и я думаю, что дочерние процессы, которые он вызывал, не знали о правильном «рабочем каталоге». Код, который работает, выглядит следующим образом.
Start-Process "$SQLServerSetupLocation\setup.exe" -Wait -WorkingDirectory $SQLServerSetupLocation -ArgumentList $arguments