131 lines
9.0 KiB
PowerShell
131 lines
9.0 KiB
PowerShell
# 初始化資料庫腳本
|
|
#
|
|
# 前置作業:
|
|
# 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
|
|
}
|