首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SSMS 圖形介面產生 T-SQL 腳本:備份、建立物件、修改設定一鍵腳本化

     編輯:關於SqlServer

SSMS 圖形介面操作雖直觀,但難以重現、版控、自動化。SQL Server 2005+ 內建 **「產生指令碼」** 功能,將 GUI 設定轉為可執行 T-SQL,支援備份、建立資料庫/表/索引/登入/權限等幾乎所有操作。

實作範例:資料庫備份腳本化

  1. SSMS 物件總管右鍵資料庫 → **工作 → 備份**。
  2. 設定備份類型 (完整/差異/記錄)、目的地 (磁碟/URL)、壓縮、加密、媒體選項。
  3. **不點選「確定」執行**,改點選工具列 **「指令碼」→ 「指令碼動作到新查詢視窗」** (或「檔案」/「Clipboard」/「Agent 作業」)。

產出腳本片段

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 作業執行

其他常用腳本化場景

  • 建立資料庫/表/索引/檢視/預存程序:右鍵物件 → 「指令碼物件為」 → CREATE/ALTER/DROP。
  • 登入/使用者/權限遷移:安全性 → 登入/使用者 → 指令碼 → 含 SID、密碼雜湊、角色成員資格。
  • Agent 作業/警示/操作員:SQL Server Agent → 作業 → 指令碼 → 建立完整作業定義。
  • 資料庫圖表/維護計畫/原則:同樣支援腳本化。

進階:PowerShell + SMO 自動化產生腳本

# 遍歷所有使用者資料庫產生建立腳本
[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"
}

最佳實務

  1. **所有變更先腳本化,存入 Git**,再由 CI/CD 管線部署,實現 Infrastructure as Code。
  2. 腳本化時勾選 **「包含相依物件」**、**「含 IF NOT EXISTS」**、**「指令碼權限」** 避免部署失敗。
  3. 定期匯出 **完整伺服器物件定義** 作為災難復原基準線。

結語

SSMS 「指令碼」按鈕是 DBA 從手工操作邁向自動化、版控、可重現運維的關鍵橋樑。養成「先腳本、後執行」習慣,配合 SMO/PowerShell 批次產生,構建可靠的資料庫變更管理流程。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved