SQL 2012 Unattended Install Scripts

WARNING: This blog post has been superseded by my updated post here. Do not use the article below, as it is outdated.

WARNING: This blog post has been superseded by my updated post here. Do not use the article below, as it is outdated.

———-

Based on my popular article (#1 article of all time) describing how to do a SQL Server 2008 R2 unattended installation, I’ve freshened up the contents for SQL Server 2012. In this case I’m assuming the installation is on Windows Server 2008 R2.

The first step is to create a SQL ini configuration file which contains the configuration settings for the unattended installation. Below I’ve included a sample configuration. Of course you will need to change some paths, such as installation media and program/database/log/tempdb directories. After SQL is installed I configure the service accounts for regular domain users (or managed service accounts in Windows Server 2008 R2, or group service accounts in Windows Server 2012), as I would not recommend leaving SQL to run with “network service” privileges.

Save the contents of the section below into a file called SQL-2012-base.ini.

—-
;SQL Server 2012 Configuration File
; SQL-2012-Base.ini
;
[OPTIONS]

; Specify the Instance ID for the SQL Server features you have specified. SQL Server directory structure, registry structure, and service names will incorporate the instance ID of the SQL Server instance.

INSTANCEID=”MSSQLSERVER”

; Specifies a Setup work flow, like INSTALL, UNINSTALL, or UPGRADE. This is a required parameter.

ACTION=”Install”

; Specifies features to install, uninstall, or upgrade. The list of top-level features include SQL, AS, RS, IS, MDS, and Tools. The SQL feature will install the Database Engine, Replication, Full-Text, and Data Quality Services (DQS) server. The Tools feature will install Management Tools, Books online components, SQL Server Data Tools, and other shared components.

FEATURES=SQLENGINE,CONN,SSMS,ADV_SSMS

; Displays the command line parameters usage

HELP=”False”

; Specifies that the detailed Setup log should be piped to the console.

INDICATEPROGRESS=”False”

; Setup will not display any user interface.

QUIET=”False”

; Setup will display progress only without any user interaction.

QUIETSIMPLE=”True”

; Specifies that Setup should install into WOW64. This command line argument is not supported on an IA64 or a 32-bit system.

X86=”False”

; Specifies the path to the installation media folder where setup.exe is located.

MEDIASOURCE=”z:”

; Detailed help for command line argument ENU has not been defined yet.

ENU=”True”

; Parameter that controls the user interface behavior. Valid values are Normal for the full UI,AutoAdvance for a simplied UI, and EnableUIOnServerCore for bypassing Server Core setup GUI block.

; UIMODE=”Normal”

; Specify if errors can be reported to Microsoft to improve future SQL Server releases. Specify 1 or True to enable and 0 or False to disable this feature.

ERRORREPORTING=”False”

; Specify the root installation directory for shared components.  This directory remains unchanged after shared components are already installed.

INSTALLSHAREDDIR=”D:Program FilesMicrosoft SQL Server”

; Specify the root installation directory for the WOW64 shared components.  This directory remains unchanged after WOW64 shared components are already installed.

INSTALLSHAREDWOWDIR=”D:Program Files (x86)Microsoft SQL Server”

; Specify the installation directory.

INSTANCEDIR=”D:Program FilesMicrosoft SQL Server”

; Specify that SQL Server feature usage data can be collected and sent to Microsoft. Specify 1 or True to enable and 0 or False to disable this feature.

SQMREPORTING=”False”

; Specify a default or named instance. MSSQLSERVER is the default instance for non-Express editions and SQLExpress for Express editions. This parameter is required when installing the SQL Server Database Engine (SQL), Analysis Services (AS), or Reporting Services (RS).

INSTANCENAME=”MSSQLSERVER”

; Agent account name

AGTSVCACCOUNT=”NT AUTHORITYNETWORK SERVICE”

; Auto-start service after installation.

AGTSVCSTARTUPTYPE=”Automatic”

; Startup type for the SQL Server service.

SQLSVCSTARTUPTYPE=”Automatic”

; Level to enable FILESTREAM feature at (0, 1, 2 or 3).

FILESTREAMLEVEL=”0″

; Set to “1” to enable RANU for SQL Server Express.

ENABLERANU=”False”

; Specifies a Windows collation or an SQL collation to use for the Database Engine.

SQLCOLLATION=”SQL_Latin1_General_CP1_CI_AS”

; Account for SQL Server service: DomainUser or system account.

SQLSVCACCOUNT=”NT AUTHORITYNETWORK SERVICE”

; Default directory for the Database Engine user databases.

SQLUSERDBDIR=”K:Microsoft SQL ServerMSSQLData”

; Default directory for the Database Engine user database logs.

SQLUSERDBLOGDIR=”L:Microsoft SQL ServerMSSQLDataLogs”

; Directory for Database Engine TempDB files.

SQLTEMPDBDIR=”T:Microsoft SQL ServerMSSQLData”

; Directory for the Database Engine TempDB log files.

SQLTEMPDBLOGDIR=”T:Microsoft SQL ServerMSSQLDataLogs”

; Provision current user as a Database Engine system administrator for SQL Server 2012 Express.

ADDCURRENTUSERASSQLADMIN=”False”

; Specify 0 to disable or 1 to enable the TCP/IP protocol.

TCPENABLED=”1″

; Specify 0 to disable or 1 to enable the Named Pipes protocol.

NPENABLED=”0″

; Startup type for Browser Service.

BROWSERSVCSTARTUPTYPE=”Disabled”

; Accept SQL Server license terms

IACCEPTSQLSERVERLICENSETERMS=”TRUE”

; Specify whether SQL Server Setup should discover and include product updates. The valid values are True and False or 1 and 0. By default SQL Server Setup will include updates that are found.

UpdateEnabled=”True”

; Specify the location where SQL Server Setup will obtain product updates. The valid values are “MU” to search Microsoft Update, a valid folder path, a relative path such as .MyUpdates or a UNC share. By default SQL Server Setup will search Microsoft Update or a Windows Update service through the Window Server Update Services.

UpdateSource=”MU”

; CM brick TCP communication port

COMMFABRICPORT=”0″

; How matrix will use private networks

COMMFABRICNETWORKLEVEL=”0″

; How inter brick communication will be protected

COMMFABRICENCRYPTION=”0″

; TCP port used by the CM brick

MATRIXCMBRICKCOMMPORT=”0″
—–

At this point I wrote a little batch file to call the SQL installer, pass along the group I wanted to be designated as the SQL administrator, and also configure Windows Server 2008 R2 auditing so SQL security events could get logged in the main Windows security event log. This also assumes the installation media is mounted to the Z: drive, so modify to suit your needs. I put the text below into a file called SQL-2012-base.cmd.

—–
:: SQL 2012 Installation Script
:: SQL-2012-Base.cmd

@echo off
z:
IF “%1″==”” GOTO Error

:: Install base SQL Server 2012 Enterprise

title SQL Server 2012 Base Installation
echo Installing base SQL Server 2012…

“z:setup.exe” /CONFIGURATIONFILE=D:sql-2012-Base.ini /INDICATEPROGRESS /SQLSYSADMINACCOUNTS=”%1″

auditpol /set /subcategory:”application generated” /success:enable /failure:enable
exit /B

:Error
Echo Script requires DBAdmin argument in the form domainGroup

——
To perform the unattended installation of SQL Server 2012 on Windows Server 2008 R2, do the following:
1. Open an elevated powershell prompt and install .NetFramework 3.5
import-module servermanager
add-windowsfeature as-net-framework
2.  Mount the SQL Server 2012 ISO to the Z drive (or whatever you chose and modified the scripts to use)
3. Copy the two files you just created (the .ini and .cmd) to the root of the D: drive
4. Open an elevated command prompt and CD to the Z drive.
5. Type: D:SQL-2012-base.cmd contosoSQL-DBAdmin (replace with the domain and group or user that will be SQL administrator)
6. Wait 10+ minutes for the installation to complete, and you should get a return code of 0.
Viola…very similar to SQL Server 2008 R2.

 

Print Friendly, PDF & Email

Related Posts

Subscribe
Notify of
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
dmc
March 2, 2015 9:47 am

If I want to do multiple unattended installs of sql server instances on the same server, when I am doing the second install, will the first instance become unavailable until the completion of the second install?