Udostępnij za pośrednictwem


Why should you install SQL 2008 from the command line

 

 

If a project needs several SQL Servers, I believe that command-line setup is the way to install SQL Server for the following reasons:

  • Speed. Once the process is established, it's quick to follow.
  • Lesser chance of making mistake while navigating the setup GUI.
  • Guarantees that instances in your project are installed exactly the same way.
  • If setup runs into problems, it's very easy to escalate, because you know exactly what you did

This is how typical SQL command-line setup command looks like:

 

setup.exe /q /PID="XXXXX-XXXXX-XXXXX-XXXXX-XXXXX" /ACTION=install /FEATURES=SQL,IS,Tools,BIDS /InstanceName=MSSQLSERVER /SQLSVCACCOUNT="DOMAIN\svcaccount" /AGTSVCACCOUNT="DOMAIN\svcaccount" /SQLSYSADMINACCOUNTS="BUILTIN\ADMINISTRATORS" /ISSVCAccount="NT AUTHORITY\Network Service" /AGTSVCSTARTUPTYPE=2 /SQLSVCSTARTUPTYPE=2/ISSVCSTARTUPTYPE=2 /InstanceDir=D:\ /ERRORREPORTING=1 /SQMREPORTING=1 /SQLSVCPASSWORD="****" /AGTSVCPASSWORD="****" /SQLSYSADMINACCOUNTS="BUILTIN\ADMINISTRATORS" "DOMAIN\svcaccount"

A few comments:

  • The complete syntax and all the options can be found in Books Online (How to: Install SQL Server 2008 from the Command Prompt)
  • The edition is inferred from the /PID. If /PID is not specified, evaluation edition (180-day expiration) is installed.
  • There are some pre-requisites to SQL Setup (Windows Installer 4.5, Powershell). If they are not installed, the setup will install them first and may ask you to reboot and re-run the setup.
  • At least with SQL Server 2008 RC With Vista/Win2008 it's better to run the setup from elevated (Administrator) command prompt. If ran from non-elevated command prompt, the setup will not be able to print errors or messages - it will just silently end, and you will have to look at the setup logs to see what happened.
  • Even with successful setup, the logs should be inspected. The summary log is here: "C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\Summary.txt". On successful install, there's a "Final result: Passed" line at the top of the log.
  • For couple of reasons, I don't like SQL installed into C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\... - I prefer that SQL is installed in the root of a different drive. Hence I specified /InstanceDir=D:\ (SQL will be installed into D:\MSSQL10.MSSQLSERVER\MSSQL), but if you like default just don't specify this parameter.

Now, the fresh install of SQL will not allow connections from outside. Continuing command-line theme, here is how one can enable Named Pipes and TCP/IP (SQL needs to be cycled for changes to take effect):

 

WMIC /NAMESPACE:\\root\Microsoft\SqlServer\ComputerManagement10 PATH ServerNetworkProtocol WHERE "ProtocolName='Tcp' OR ProtocolName='Np'" CALL SetEnable

 

Open up port 1433 for TCP/IP connections:

 

netsh firewall add portopening TCP 1433 SQLServerDefaultInstance

 

You will need to tweak these commands for your environment, but I'm sure that small investment into getting your command-line install steps documented will speed up your installs and bring better predictability.

As a DBA, I found especially useful to provide a guide to Developers and Testers for the SQL setups. Now when I log into their server to troubleshoot something, I know how exactly SQL was installed.

Comments

  • Anonymous
    May 01, 2009
    Can you clarify this further? "For couple of reasons, I don't like SQL installed into C:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQL" I know that the system drive is basic disk and is difficult to expand.  What other reasons are there to install SQL to another volume?

  • Anonymous
    January 29, 2010
    The comment has been removed