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

SQL Server 生成腳本導出表結構與數據:圖文教程(關鍵在「高級選項」)

     編輯:關於SqlServer

SSMS「生成腳本」精靈默認**僅導出架構**,數據不導出。只需在「高級選項」將「要編寫腳本的數據類型」改為「架構和數據」,即可一次性導出建表語句+INSERT 數據。

操作步驟 (SSMS 2008/2012/2014/2016/2017/2019 通用)

  1. 對象總管 → 右鍵目標數據庫 → 任務 → 生成腳本...
  2. 「簡介」頁 → 下一步。
  3. 「選擇對象」頁:
    • 「為整個資料庫編寫腳本」:全庫導出。
    • 「選取特定資料庫對象」:勾選需導出的表/視圖/預存過程等。
    → 下一步。
  4. 關鍵步驟:「設定腳本選項」頁 → 點擊 進階 按鈕。
  5. 在「進階腳本選項」對話框中找到 要編寫腳本的數據類型 (Types of data to script):
    • 預設:僅架構 (Schema only)
    • 修改為:架構和數據 (Schema and data) ✅
    • 或 僅數據 (Data only) — 僅導出 INSERT 語句。
    → 確定 返回。
  6. 「輸出選項」頁:選擇「儲存到檔案」(單檔/每對象一檔) 或「剪貼簿」/「新查詢視窗」。
  7. 下一步 → 完成,生成 .sql 腳本文件。

生成腳本內容示例

-- 建表架構
CREATE TABLE [dbo].[Customers](
    [CustomerId] [char](5) NOT NULL,
    [City] [varchar](10) NOT NULL,
    CONSTRAINT [PK_Customers] PRIMARY KEY CLUSTERED ([CustomerId] ASC)
);

-- 數據 INSERT
INSERT [dbo].[Customers] ([CustomerId], [City]) VALUES (N'FISSA', N'Madrid');
INSERT [dbo].[Customers] ([CustomerId], [City]) VALUES (N'FRNDO', N'Madrid');
...

常見問題與解決

問題原因解決
導出文件巨大 (GB 級)大表數據全用 INSERT,文本膨脹大表改用 BCP/導入導出嚮導/SSIS 導出二進制格式
導出腳本執行報錯「違反外鍵約束」表導出順序未按依賴關係排序勾選「依賴對象」或手動調整腳本順序;或先禁用 FK 後啟用
IDENTITY 列插入失敗腳本含 IDENTITY 列值但目標表未 SET IDENTITY_INSERT ON腳本前後添加 SET IDENTITY_INSERT Table ON/OFF
加密對象無法腳本化WITH ENCRYPTION 的預存過程/視圖無法導出,需保留原始源碼

替代方案:命令列工具

  • sqlpackage.exe (DACFx):`/Action:Script /SourceFile:db.dacpac /TargetFile:script.sql /p:ScriptData=true`
  • bcp.exe:純數據高速導出,配合格式化文件。
  • PowerShell + SMO:自動化腳本化、CI/CD 集成首選。

總結

「生成腳本」+「高級選項→架構和數據」是中小型數據庫遷移、版本控制、測試數據準備的**最快捷方式**。大表請改用 BCP/SSIS/DACPAC。

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