命令行靜默安裝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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM