SQL Server 安裝使用 Setup.exe (Windows Server Core)

2022-07-07

筆記 SQL Server 如何在 Windows Server Core 環境使用 Setup.exe 進行安裝,除對應 GUI 的各種安裝步驟與組態設定外,一併也加入安裝上的優化設定方式。

SQL Server Logo

說明

安裝 Command

.\setup.exe /Q /ACTION="install" /IACCEPTSQLSERVERLICENSETERMS /FEATURES=SQLEngine,Conn /INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS="Domain\ACCOUNT" /INSTALLSQLDATADIR="D:\Program Files\Microsoft SQL Server" /PID="*****-*****-*****-*****-*****" /SQLTEMPDBFILESIZE=512 /SQLTEMPDBFILEGROWTH=128 /SQLTEMPDBLOGFILESIZE=512 /SQLCOLLATION="Chinese_Taiwan_Stroke_CI_AS" /SQLSVCINSTANTFILEINIT

好讀換行版本

.\setup.exe 
/Q 
/ACTION="install" 
/IACCEPTSQLSERVERLICENSETERMS 
/FEATURES=SQLEngine,Conn 
/INSTANCENAME=MSSQLSERVER 
/SQLSYSADMINACCOUNTS="Domain\ACCOUNT" 
/INSTALLSQLDATADIR="D:\Program Files\Microsoft SQL Server" 
/PID="*****-*****-*****-*****-*****" 
/SQLTEMPDBFILESIZE=512 
/SQLTEMPDBFILEGROWTH=128 
/SQLTEMPDBLOGFILESIZE=512 
/SQLCOLLATION="Chinese_Taiwan_Stroke_CI_AS"
/SQLSVCINSTANTFILEINIT
參數 用途 範例值
Q 安靜安裝
ACTION 要執行的動作 "install"
IACCEPTSQLSERVERLICENSETERMS 接受合約
FEATURES 要安裝的功能 SQLEngine,Conn
INSTANCENAME 實體名稱 MSSQLSERVER
SQLSYSADMINACCOUNTS SysAdmin 設定 "Domain\ACCOUNT"
INSTALLSQLDATADIR 資料檔的根目錄 "D:\Program Files\Microsoft SQL Server"
PID 授權序號 "*****-*****-*****-*****-*****"
SQLTEMPDBFILESIZE tempdb 預設大小 512
SQLTEMPDBFILEGROWTH tempdb 成長大小 128
SQLTEMPDBLOGFILESIZE tempdb log 預設大小 512
SQLCOLLATION 預設定序 "Chinese_Taiwan_Stroke_CI_AS"
SQLSVCINSTANTFILEINIT 資料庫立即檔案初始化 (效能強化) True

SQL Server Installation Detailed 安裝流程與規劃詳細說明

SQL Server 2019 Developer 安裝教學與步驟流程

移除 Command

.\setup /qs /ACTION=Uninstall /FEATURES=SQLEngine /INSTANCENAME=MSSQLSERVER /IACCEPTSQLSERVERLICENSETERMS

安裝後相關設定

安裝 CU

首先前往 SQL Server CU 網站進行下載,解壓縮後透過 Command 的方式進行安裝:

.\SQLServer2019-KB5014353-x64.exe /x:d:\sqlserver_cu
.\sqlserver_cu\SETUP.EXE /action=patch /instancename=mssqlserver /q /IAcceptSQLServerLicenseTerms

使用 PowerShell Module cUserRightsAssignment 進行授權管理,用以優化資料庫組態設定。

Lock pages in memory

Import-Module C:\temp\cUserRight.psm1
Get-UserRight "NT SERVICE\MSSQLSERVER" | % {$_.UserRights}
Grant-UserRight "NT SERVICE\MSSQLSERVER" "SeLockMemoryPrivilege"
Get-UserRight "NT SERVICE\MSSQLSERVER" | % {$_.UserRights}

驗證 Lock pages in memory 啟用的方式

SELECT a.memory_node_id, node_state_desc, a.locked_page_allocations_kb
FROM sys.dm_os_memory_nodes a
INNER JOIN sys.dm_os_nodes b ON a.memory_node_id = b.memory_node_id

💡 觀察 Locked_page_allocation_kb 不等於 0

Database Instant File Initialization

如果再安裝過程忘記加入 SQLSVCINSTANTFILEINIT 可以另外以授權的方式處理。

Import-Module C:\temp\cUserRight.psm1
Get-UserRight "NT SERVICE\MSSQLSERVER" | % {$_.UserRights}
Grant-UserRight "NT SERVICE\MSSQLSERVER" "SeManageVolumePrivilege"
Get-UserRight "NT SERVICE\MSSQLSERVER" | % {$_.UserRights}

驗證 資料庫立即檔案初始化 的方式

select instant_file_initialization_enabled ,* from sys.dm_server_services
where servicename like 'SQL Server%'

💡 觀察 instant_file_initialization_enabled 為 Y

如何管理 Service

使用其他伺服器端環境的 compmgmt.msc 進行 SQL Server Service 管理

Reference

An Overview of Instant File Initialization in SQL Server | SQLShack

使用 PowerShell 設定使用者權限(User Right) | 黑暗執行緒