SQL Server 7.0/2000 內建 scptxfr.exe (Script Transfer) 可將整個資料庫結構 (含物件、資料、權限) 匯出為 .sql 腳本。本文記錄命令列參數與 T-SQL 自動化呼叫範例。
工具位置
C:\Program Files\Microsoft SQL Server\MSSQL\Upgrade\scptxfr.exe
T-SQL 自動化呼叫 (使用 xp_cmdshell)
DECLARE @cmd VARCHAR(1000);
SET @cmd = 'master.dbo.xp_cmdshell ''' +
'C:\"Microsoft SQL Server"\MSSQL\Upgrade\scptxfr.exe ' +
'/s YourServerName ' +
'/p YourSAPassword ' +
'/I ' + -- 匯出物件腳本
'/d YourDBName ' +
'/f C:\YourDBName.sql' + -- 輸出檔案
'''';
EXEC (@cmd);
參數說明
| 參數 | 說明 |
/s server | 目標 SQL Server 執行個體名稱 |
/d database | 來源資料庫名稱 |
/I | 產生物件建立腳本 (DDL) |
/D | 產生資料 INSERT 腳本 |
/U | 產生使用者/權限腳本 |
/f file | 輸出檔案路徑 |
/p password | sa 密碼 (若用 SQL 認證) |
/E | 使用 Windows 整合認證 (信任連線) |
/q | 安靜模式 (不顯示進度) |
/r | 包含 DROP 陳述式 |
/O | 包含索引/觸發器/預設值/檢查約束 |
常用組合
- 完整結構+資料:
/I /D /U /O /r
- 僅結構 (Schema):
/I /O /r
- 僅資料:
/D
現代替代工具
| 工具 | 版本 | 特點 |
| SQL Server Management Studio (SSMS) 產生腳本精靈 | 2005+ | GUI、可選物件類型、支援資料、高度可視化 |
| sqlpackage.exe (DACFx) | 2012+ | DACPAC/BACPAC 封裝、CI/CD 整合、跨平台 |
| mssql-scripter (Python, 開源) | Linux/macOS/Windows | 命令列、輸出標準 SQL、適合容器自動化 |
| dbatools (PowerShell 模組) | 跨平台 | Export-DbaScript、豐富參數、管線操作 |
結語
scptxfr.exe 是 SQL Server 7/2000 時代的產物,現代環境請使用 SSMS 精靈、sqlpackage、dbatools,獲得更豐富的物件支援、編碼處理、版本控制整合與跨平台能力。
- 上一篇文章: SQL Server 預存程序實戰:游標合併兩表前兩列資料至暫存表
- 下一篇文章: MySQL 核心特性總覽:多執行緒、跨平台、儲存引擎、SQL 標準、連接器、效能優化
Copyright ©
程式碼之家 All Rights Reserved