# restore_run.ps1 - 独立进程执行 RESTORE,默认不覆盖已有数据库 if (-not $env:PAYROLL_RESTORE_CONNECTION_STRING) { throw "PAYROLL_RESTORE_CONNECTION_STRING is required" } $connStr = $env:PAYROLL_RESTORE_CONNECTION_STRING $c = New-Object System.Data.Odbc.OdbcConnection $connStr $cmd = $null try { $c.Open() $cmd = $c.CreateCommand() $cmd.CommandTimeout = 14400 $cmd.CommandText = @" RESTORE DATABASE [UFTData472115_000001] FROM DISK = '\\192.168.1.170\dbbak\ceshi20261026.bak' WITH MOVE 'MsSql' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\UFTData472115_000001.mdf', MOVE 'MsSql_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\UFTData472115_000001_log.ldf', RECOVERY, STATS = 10 "@ $cmd.ExecuteNonQuery() | Out-Null "RESTORE-DONE-OK" | Out-File 'D:\work\code\PayrollManagementSystem\db\restore_result.txt' -Encoding ascii exit 0 } catch { $message = $_.Exception.Message if ($_.Exception.InnerException) { $message = $_.Exception.InnerException.Message } ("RESTORE-FAILED: " + $message) | Out-File 'D:\work\code\PayrollManagementSystem\db\restore_result.txt' -Encoding ascii exit 1 } finally { if ($cmd) { $cmd.Dispose() } if ($c) { $c.Close(); $c.Dispose() } }