Skip to content

feat: 新增 MSSQL 匯出精靈、大型資料串流與 Geometry 支援 - #38

Merged
shadowjohn merged 34 commits into
masterfrom
codex/mssql-export-wizard
Oct 13, 2026
Merged

shadowjohn merged 34 commits into
masterfrom
codex/mssql-export-wizard

Conversation

@shadowjohn

Copy link
Copy Markdown
Owner

既有 MSSQL 本機 SQL 匯出介面缺少大型資料所需的進度與資源控制。這次新增四步驟精靈,讓使用者選擇資料表、是否包含支援的檢視定義,以及「結構與資料/僅結構/僅資料」,以串流方式產生本機 UTF-8 .sql。

  • 含資料匯出使用專屬連線與單一 SNAPSHOT transaction;預檢指出不支援的物件、欄位及缺少的權限。
  • 大欄位以固定大小分段串流輸出,還原時檢查分段順序與完整性。原生 geometry 透過 Serialize/Deserialize 保留序列化 bytes、NULL/empty、SRID 與 Z/M。
  • WinForms 精靈提供逐表狀態、雙層進度、筆數/bytes、階段 ETA、Punky 動畫與靜音;取消及關閉會等待資源清理。
  • 暫存檔經驗證後發布,處理覆寫確認、復原路徑及可選鏡像;鏡像失敗明確回報「本機完成、鏡像未完成」。

驗證

  • 最終程式碼的 151 項 smoke、AutoReleasePolicy、Debug/Release builds 與 diff check 通過;該輪 smoke 的 opt-in DB 測試未啟用,DB 證據來自下列獨立實測。
  • 隔離 SQL Server 2025 LocalDB:Core/Concurrency 通過。實際 2,762,444,660-byte SQL 檔以 Go sqlcmd 1.10.0 單一 session 還原 10,240 列,catalog 與串流雜湊一致。
  • Geometry:17,600,048-byte 原生值經實際服務匯出、classic sqlcmd 單一 session 還原,原始序列化雜湊與空間屬性一致;異常分段、損壞內容及重播防護通過。Geometry 擴充後已重跑 Core;前述 >2 GiB/Concurrency 證據保留原執行版本,未重跑。
  • 原生明/暗精靈的動畫、進度、取消及關閉已用 fake-service fixture 操作驗證;這項證據不代表真實 DB 長作業 UI 驗收。
  • 完整功能獨立覆核的修正已完成;Geometry 擴充另經一次完整獨立覆核通過。

已知限制

geography、自訂 CLR/alias 型別及 spatial indexes 仍會被預檢拒絕,含 spatial index 的表在僅資料模式也一樣。跨 SQL Server 版本、實際音效、實體 DPI、原生長時間真實 DB 工作、SSH 與 production 尚未驗收。固定大小的用戶端緩衝不代表 SQL Server 的記憶體、tempdb 或交易記錄消耗有相同上限。

還原需相容目標及單一 sqlcmd session;整份檔案不具全有全無或重跑冪等保證。已測 classic sqlcmd 15 無法完成 >2 GiB 輸入,須採文件記錄的 Go client 路徑。

完整操作方式、證據與邊界見 MSSQL SQL 匯出說明 及 驗證紀錄。

# Conflicts:
#	mySQLPunk/mySQLPunk.csproj
#	tests/Run-SmokeTests.ps1
# Conflicts:
#	tests/Run-SmokeTests.ps1
#	tests/SmokeTests.cs
@shadowjohn
shadowjohn merged commit f0d4f56 into master Oct 13, 2026
1 check passed
@shadowjohn
shadowjohn deleted the codex/mssql-export-wizard branch October 13, 2026 05:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant