長期以來,Windows 管理員依賴 VBScript、批次檔 自動化管理 SQL Server,但面臨:文字流處理脆弱、缺乏物件模型、錯誤處理弱、遠端管理困難。微軟推出 PowerShell 徹底解決。
# 列出所有資料庫大小
Get-ChildItem SQLSERVER:\SQL\localhost\DEFAULT\Databases | Select Name, Size
# 備份所有使用者資料庫
Get-ChildItem SQLSERVER:\SQL\localhost\DEFAULT\Databases | Where {$_.Name -notin 'master','model','msdb','tempdb'} |
ForEach-Object { Backup-SqlDatabase -ServerInstance localhost -Database $_.Name -BackupFile "C:\Backup\$($_.Name).bak" }
# 找出前 10 大資料表
Invoke-Sqlcmd -Query "
SELECT TOP 10 OBJECT_NAME(p.object_id) AS TableName, SUM(a.total_pages)*8/1024 AS SizeMB
FROM sys.partitions p JOIN sys.allocation_units a ON p.hobt_id = a.container_id
GROUP BY p.object_id ORDER BY SizeMB DESC" -Database YourDB
PowerShell 納入 SQL Server 2008,標誌著資料庫自動化從「文字腳本拼湊」進入「物件導向、強型別、可測試、可版控」的現代化階段。DBA 應投資學習 PowerShell,建立標準化自動化腳本庫,提升運維效率與可靠度。