# 初始化資料庫腳本 # # 前置作業: # 1. 在 SSMS 建立空白資料庫,例如: 17168erp_e2 # 2. 確認 sqlcmd 已安裝且可執行 # 3. 確認有該資料庫的寫入權限 # # 注意: 如果資料庫已有資料,會出現 PRIMARY KEY 違反錯誤,這是正常的 # 可以忽略這些錯誤,或使用全新空白資料庫避免錯誤 # # 用法: .\initdb.ps1 -ServerName "<伺服器名稱>" -DatabaseName "<資料庫名稱>" [-WithExclude] # - 範例: .\initdb.ps1 -ServerName "localhost" -DatabaseName "17168erp_init" # - 範例: .\initdb.ps1 -ServerName "localhost" -DatabaseName "17168erp_demo" -WithExclude param( [Parameter(Mandatory=$true)] [string]$ServerName, [Parameter(Mandatory=$true)] [string]$DatabaseName, [Parameter(Mandatory=$false)] [switch]$WithExclude ) # 遇到錯誤就停止 $ErrorActionPreference = "Stop" # 設定檔案路徑 $ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path Write-Host "========================================" Write-Host "初始化資料庫: $DatabaseName @ $ServerName" Write-Host "========================================" try { # ==== Schema ==== Write-Host "步驟 1: Schema" -ForegroundColor Yellow sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\17168erp_schema.sql" -b # ==== Include (依 Batch 順序) ==== Write-Host "步驟 2: Include" -ForegroundColor Yellow # Batch 1 sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\include\dbo.admin_group.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\include\dbo.company.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\include\dbo.country.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\include\dbo.files.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\include\dbo.item.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\include\dbo.PostCity.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\include\dbo.PostNumber.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\include\dbo.AncestralTabletStatus.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\include\dbo.RegionRoomBedStatus.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\include\dbo.RegionType.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\include\dbo.stock_reason.Table.sql" -b # Batch 2 sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\include\dbo.admin.Table.sql" -b # ==== Exclude (依 Batch 順序) ==== if ($WithExclude) { Write-Host "步驟 3: Exclude" -ForegroundColor Yellow # Batch 1 sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.GuadanTimeSetting.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.accounting_kind.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.accounting_kind2.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.actItem_kind.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.activity_category_kind.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.activity_kind.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.appellation.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.bed_kind.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.member_group.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.member_title.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.news_kind.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.project_kind.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.stock_kind.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.supplier_kind.Table.sql" -b # Batch 2 sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.actItem.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.followers.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.activity.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.supplier.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.bed_kind_detail.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.AncestralTabletArea.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.Region.Table.sql" -b # Batch 3 sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.member.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.pro_order.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.activity_check.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.family_members.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.followers_tablet.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.GuaDanOrder.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.act_bom.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.actItem_files.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.activity_kind_detail.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.activity_relating.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.activity_spares.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.news.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.AncestralTabletPosition.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.Room.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.admin_log.Table.sql" -b # Batch 4 sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.pro_order_detail.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.member_check.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.project.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.news_files.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.AncestralTabletRegistrant.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.RegionRoomBed.Table.sql" -b # Batch 5 sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.bed_order.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.accounting.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.stock.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.project_sub.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.AncestralTabletPositionRecord.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.GuaDanOrderGuest.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.ShuWen.Table.sql" -b # Batch 6 sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.bed_order_detail.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.accounting_files.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.stock_files.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.transfer_register.Table.sql" -b sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.RegionAndRoomAndBedSchedule.Table.sql" -b # Batch 7 sqlcmd -S $ServerName -d $DatabaseName -f 65001 -i "$ScriptDir\exclude\dbo.pro_order_record.Table.sql" -b } Write-Host "✅ 完成!" -ForegroundColor Green } catch { Write-Host "❌ 錯誤: $($_.Exception.Message)" -ForegroundColor Red exit 1 }