2011-05-21 274 views
1

我试图安装SQL Server 2008 Express的,但我总是得到这样的错误:SQL Server 2008的独立的安装设置IACCEPTSQLSERVERLICENSETERMS不承认

SQL Server安装程序遇到下列错误:

设置“IACCEPTSQLSERVERLICENSETERMS”指定不被识别。

错误代码0x84B40003。

我的代码是在这里:

Public NotInheritable Class MSSQL2008CommandlineInstaller 

    Shared WithEvents process As New Process() 

    Private Sub New() 
    End Sub 
    Const MSSQL_SERVER_VERSION As String = "SQLSERVER2008" 
    Const MSSQL_INSTALLER_APP As String = "C:\Users\Hello\Desktop\SQLEXPR_x86_ENU.exe" 

    Public Shared Function Install(ByVal saPassword As String, ByVal instanceName As String) As Integer 
     Dim configFileName As String = Directory.GetCurrentDirectory() & "\MSSQLInstallationConfig.ini" 

     CreateMsSQLConfigurationFile(configFileName, instanceName) 
     Return StartInstallation(MSSQL_INSTALLER_APP, saPassword, configFileName) 
    End Function 

    Private Shared Function StartInstallation(ByVal installerApplication As String, ByVal saPassword As String, ByVal configFileName As String) As Integer 
     Using process 
      process.StartInfo = New ProcessStartInfo(installerApplication) 
      process.StartInfo.Arguments = "/SAPWD=""" & saPassword & """ /CONFIGURATIONFILE=""" & configFileName & """" 
      process.StartInfo.UseShellExecute = False 
      process.StartInfo.RedirectStandardOutput = True 
      process.StartInfo.RedirectStandardError = True 
      process.StartInfo.CreateNoWindow = True 
      process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden 
      process.Start() 
      process.BeginOutputReadLine() 
      process.BeginErrorReadLine() 
      process.WaitForExit() 
      Dim exitCode As Integer = process.ExitCode 
      process.Close() 
      Return exitCode 
     End Using 
    End Function 

    Public Shared Sub OnOutputDataReceived(ByVal sender As Object, ByVal e As DataReceivedEventArgs) Handles process.OutputDataReceived 
     If Not [String].IsNullOrEmpty(e.Data) Then 
      Console.WriteLine("Output: " & Convert.ToString(e.Data)) 
     End If 
    End Sub 

    Public Shared Sub OnErrorDataReceived(ByVal sender As Object, ByVal e As DataReceivedEventArgs) Handles process.ErrorDataReceived 
     If Not [String].IsNullOrEmpty(e.Data) Then 
      Console.WriteLine("Error: " & Convert.ToString(e.Data)) 
     End If 
    End Sub 

    Private Shared Sub CreateMsSQLConfigurationFile(ByVal fileName As String, ByVal instanceName As String) 
     Using configFile = New FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None) 
      Dim writer As New StreamWriter(configFile) 
      writer.WriteLine("[" & MSSQL_SERVER_VERSION & "]") 
      writer.WriteLine("INSTANCEID=""" & instanceName & """") 
      writer.WriteLine("INSTANCENAME=""" & instanceName & """") 
      writer.WriteLine("ACTION=""Install""") 
      writer.WriteLine("FEATURES=SQLENGINE") 
      writer.WriteLine("HIDECONSOLE=""True""") 
      writer.WriteLine("QUIET=""False""") 
      writer.WriteLine("QUIETSIMPLE=""False""") 
      writer.WriteLine("HELP=""False""") 
      writer.WriteLine("INDICATEPROGRESS=""True""") 
      writer.WriteLine("X86=""False""") 
      writer.WriteLine("IACCEPTSQLSERVERLICENSETERMS=""True""") 
      writer.WriteLine("ROLE=""AllFeatures_WithDefaults""") 
      writer.WriteLine("ENU=""True""") 
      writer.WriteLine("ERRORREPORTING=""False""") 
      writer.WriteLine("SQMREPORTING=""False""") 
      writer.WriteLine("AGTSVCACCOUNT=""NT AUTHORITY\NETWORK SERVICE""") 
      writer.WriteLine("AGTSVCSTARTUPTYPE=""Automatic""") 
      writer.WriteLine("SQLSVCACCOUNT=""NT AUTHORITY\NETWORK SERVICE""") 
      writer.WriteLine("SQLSVCSTARTUPTYPE=""Automatic""") 
      writer.WriteLine("SECURITYMODE=""SQL""") 
      writer.WriteLine("ADDCURRENTUSERASSQLADMIN=""True""") 
      writer.WriteLine("FILESTREAMLEVEL=""0""") 
      writer.WriteLine("ENABLERANU=""True""") 
      writer.WriteLine("SQLCOLLATION=""SQL_Latin1_General_CP1_CI_AS""") 
      writer.WriteLine("TCPENABLED=""1""") 
      writer.WriteLine("NPENABLED=""1""") 
      writer.WriteLine("BROWSERSVCSTARTUPTYPE=""Automatic""") 
      writer.Flush() 
     End Using 
    End Sub 
End Class 
+0

我有从命令行运行SQL Server安装了同样的问题: SQLEXPR_x86_ENU.exe/QS/IACCEPTSQLSERVERLICENSETERMS/ACTION = “安装”/ FEATURES = “SQL”/ INSTANCENAME = “SQLEXPRESS”/ BROWSERSVCSTARTUPTYPE =“自动”/ SQLSVCACCOUNT =“NT AUTHORITY \ NETWORK SERVICE” 它说我相同:指定的设置'IACCEPTSQLSERVERLICENSETERMS'不被识别,尽管该设置完全在MSDN中描述! 我正在使用最新的SQL Server SP2 2008 Express。 – Alex 2011-06-15 13:49:34

回答

0

documentation page来看,和this blog posting,我不明白为什么你在做什么不行的,但我可以建议两件事情尝试:

  1. 将案例更改为IAcceptSQLServerLicenseTerms而不是全部大写。我怀疑这一点很重要,但这是你的代码和这两页上的内容之间的区别。
  2. 删除从配置文件中的一个参数,并把它添加到命令行参数,以便

这条线:

process.StartInfo.Arguments = "/SAPWD=""" & saPassword & """ /CONFIGURATIONFILE=""" & configFileName & """" 

读作:

process.StartInfo.Arguments = "/IAcceptSQLServerLicenseTerms /SAPWD=""" & saPassword & """ /CONFIGURATIONFILE=""" & configFileName & """" 

代替。

相关问题