命令行静默安装SQLServer 2008R2脚本

依据网上的静默安装操作方法,参考微软《如何从命令提示符安装 SQL Server 2008 R2》,编写自己使用的静默安装脚本。

有欠缺之处请大家指正。

脚本内使用批处理创建随机密码,用于创建SQLServer对应的启动账号。安装完成后需要做对应的账号管理,需要手工修改此账号密码,同时在SQLServer配置管理工具内修改对应的服务启动账号密码。

使用时,请将代码粘贴到记事本,按需求对照微软命令行安装文档修改文档内容。修改文件扩张名为.bat.

运行时需要提供一个参数:安装源文件根目录,末位不要带路径限定符”\"

例如:QueryInstallSQLServer.bat Z:

注意事项:

  此脚本创建的系统账号由于没有配置特别选项,重启服务时会不能正常启动。需要手工修改用户选项“用户不能修改密码”和“密码永不过期”

  另外,账号本机拒绝登录等安全问题也没处理。

  没有处理原因是这部分脚本不知道怎么写,请大大们慷慨赐教。先谢啦

主要需要修改的选项是:

/FEATURES 安装组件列表
/PID 产品序列号
/SQLTEMPDBDIR TempDB数据库数据文件存放位置
/SQLTEMPDBLOGDIR TempDB数据库日志文件存放位置
/SQLBACKUPDIR 备份文件存放位置
/SQLUSERDBDIR 用户数据库数据文件存放位置
/SQLUSERDBLOGDIR 用户数据库日志文件存放位置
/IACCEPTSQLSERVERLICENSETERMS 同意用户协议,在安装SQL Server2005时需要将此参数去掉
@echo off

setlocal enabledelayedexpansion

cls

Set SourcePath=%1

if not exist "%SourcePath%\setup.exe" (

        echo Error:Not Correct Install File For SQLServer 2008R2

        pause

        exit

)

echo Create System Service Users

call :randomPassword 14 sqlsrvpwd sqlagtpwd 

net user sqlsrvuser /delete

net user sqlsrvuser %sqlsrvpwd% /add

net user sqlagtuser /delete

net user sqlagtuser %sqlagtpwd% /add



wmic /? 1>nul 2>nul

wmic path Win32_UserAccount where name='sqlsrvuser' set  PasswordExpires=false

wmic path Win32_UserAccount where name='sqlagtuser' set  PasswordExpires=false



echo Install .Net Framework

Rem cd %instalpath%

%SourcePath%\setup.exe /QS

Rem /IACCEPTSQLSERVERLICENSETERMS is sqlserver2008R2 needed

echo Install SQL Server

%SourcePath%\setup.exe ^

/Q /ACTION=Install ^

/IACCEPTSQLSERVERLICENSETERMS ^

/FEATURES=SQLENGINE,REPLICATION,CONN,BC,SSMS,ADV_SSMS ^

/INSTANCENAME="MSSQLSERVER" ^

/PID="序列号" ^

/INDICATEPROGRESS="True" ^

/INSTALLSHAREDDIR="C:\Program Files\Microsoft SQL Server" ^

/INSTALLSHAREDWOWDIR="C:\Program Files (x86)\Microsoft SQL Server" ^

/INSTANCEDIR="C:\Program Files\Microsoft SQL Server" ^

/SQLCOLLATION="Latin1_General_100_CI_AS" ^

/AGTSVCACCOUNT="sqlagtuser" /AGTSVCSTARTUPTYPE="Automatic" /AGTSVCPASSWORD="%sqlagtpwd%" ^

/SQLSVCACCOUNT="sqlsrvuser" /SQLSVCSTARTUPTYPE="Automatic" /SQLSVCPASSWORD="%sqlsrvpwd%" ^

/SQLSYSADMINACCOUNTS="Administrator" ^

/TCPENABLED="1" ^

/NPENABLED="0" ^

/FILESTREAMLEVEL="0" ^

/SQLTEMPDBDIR="D:\MSSQL\Data" ^

/SQLTEMPDBLOGDIR="D:\MSSQL\Log" ^

/SQLBACKUPDIR="D:\MSSQL\Backup" ^

/SQLUSERDBDIR="D:\MSSQL\Data" ^

/SQLUSERDBLOGDIR="D:\MSSQL\Log"

echo Finished

pause

Exit







:randomPassword

::-----create random password

::-----%1 password length %2 return password parameter

::-----goto loop , parameter nesting

@echo off

if "%1"=="" goto :eof

if %1 lss 1 goto :eof

set password_len=%1

set return=

set wordset=abcdefghijklmnopqrstuvwxyz023456789_ABCDEFGHIJKLMNOPQRSTUVWXYZ

::------------------loop

:randomPassword1

set /a numof=%random%%%62

call set return=%return%%%wordset:~%numof%,1%%

set /a password_len-=1

if %password_len% gtr 0 goto randomPassword1

::------------------loop

if not "%2"=="" set %2=%return%

shift /2

if not "%2"=="" goto randomPassword

goto :eof

 原文:http://www.cnblogs.com/ivistn/archive/2012/02/15/2352835.html

你可能感兴趣的:(sqlserver)