Parameterise instance name for backup script

This commit is contained in:
2025-10-09 10:09:16 +01:00
parent 1ac04e0b79
commit 9d0e2f7fde
2 changed files with 35 additions and 16 deletions

View File

@@ -1,14 +1,19 @@
param(
[Parameter(Mandatory=$true)]
[string]$SqlInstance
)
#
# backup.ps1
#
# TODO: Update cleanup time based on backup type
$sqlInstance = "sqlfcsql\TESTINST"
#$directory = "H:\Backup"
$directory = "C:\Rubrik\mount"
$instanceName = $SqlInstance.Split('\')[1]
$directory = "C:\Rubrik\$instanceName"
$fullBackupDay = 'Thursday'
$checkCluster = $false
$logFile = "C:\Rubrik\backup.log"
$logFile = "C:\Rubrik\backup-$instanceName.log"
$fullFlag = $directory + "\last_full.flag"
$diffFlag = $directory + "\last_diff.flag"
@@ -29,21 +34,35 @@ function Write-Log($message) {
Write-Host $logEntry
}
# Check if directory exists and is a symbolic link
if (-not (Test-Path $directory)) {
Write-Log "ERROR: Directory '$directory' does not exist. Exiting script."
exit 1
}
$directoryInfo = Get-Item $directory
if (-not ($directoryInfo.Attributes -band [System.IO.FileAttributes]::ReparsePoint)) {
Write-Log "ERROR: Directory '$directory' is not a symbolic link. Exiting script."
exit 1
}
Write-Log "INFO: Directory '$directory' exists and is a symbolic link. Target: $($directoryInfo.Target). Proceeding."
if ($checkCluster) {
# Check if SQL instance is running locally
$localNode = $env:COMPUTERNAME
$instanceName = $sqlInstance.Split('\')[1]
$clusterInstance = Get-ClusterResource | Where-Object { $_.ResourceType -eq "SQL Server" -and $_.Name -eq "SQL Server ($instanceName)" }
if ($clusterInstance) {
$ownerNode = $clusterInstance.OwnerNode.Name
if ($ownerNode -ne $localNode) {
Write-Log "SQL instance '$sqlInstance' is not running on local node '$localNode'. Exiting script."
Write-Log "SQL instance '$SqlInstance' is not running on local node '$localNode'. Exiting script."
exit 1
} else {
Write-Log "SQL instance '$sqlInstance' is running on local node '$localNode'. Proceeding."
Write-Log "SQL instance '$SqlInstance' is running on local node '$localNode'. Proceeding."
}
} else {
Write-Log "ERROR: SQL instance '$sqlInstance' not found in cluster resources."
Write-Log "ERROR: SQL instance '$SqlInstance' not found in cluster resources."
exit 1
}
} else {
@@ -77,7 +96,7 @@ if ((Get-Date).DayOfWeek -eq $fullBackupDay) {
$query = "EXECUTE [dbo].[DatabaseBackup] @Databases = 'ALL_DATABASES', @Directory = '$directory', @BackupType = '$backupType', @Verify = 'N', @CleanupTime = $cleanupTime, @CheckSum = 'Y', @LogToTable = 'Y'"
Write-Log "Executing backup type: $backupType"
$sqlcmdOutput = & sqlcmd -S $sqlInstance -Q $query 2>&1
$sqlcmdOutput = & sqlcmd -S $SqlInstance -Q $query 2>&1
$sqlcmdExitCode = $LASTEXITCODE
if ($sqlcmdExitCode -eq 0) {