SSMS 圖形介面操作雖直觀,但難以重現、版控、自動化。SQL Server 2005+ 內建 **「產生指令碼」** 功能,將 GUI 設定轉為可執行 T-SQL,支援備份、建立資料庫/表/索引/登入/權限等幾乎所有操作。
BACKUP DATABASE [AdventureWorks]
TO DISK = N'C:\Backup\AdventureWorks_Full_20240518.bak'
WITH NOFORMAT, NOINIT,
NAME = N'AdventureWorks-Full Database Backup',
SKIP, NOREWIND, NOUNLOAD, STATS = 10,
COMPRESSION, CHECKSUM;
-- 可直接存為 .sql 檔、納入版控、排程 Agent 作業執行
# 遍歷所有使用者資料庫產生建立腳本
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | Out-Null
$srv = New-Object Microsoft.SqlServer.Management.Smo.Server('localhost')
$srv.Databases | Where-Object { -not $_.IsSystemObject } | ForEach-Object {
$scrp = New-Object Microsoft.SqlServer.Management.Smo.Scripter($srv)
$scrp.Options.ScriptDrops = $false
$scrp.Options.WithDependencies = $true
$scrp.Options.Indexes = $true
$scrp.Script($_.Name) | Out-File "C:\Scripts\$($_.Name)_Create.sql"
}
SSMS 「指令碼」按鈕是 DBA 從手工操作邁向自動化、版控、可重現運維的關鍵橋樑。養成「先腳本、後執行」習慣,配合 SMO/PowerShell 批次產生,構建可靠的資料庫變更管理流程。