Files
sql-scripts/TPDT-268 - ACP in task sequence/dumpDevice.ps1
2024-03-28 13:45:35 +01:00

63 lines
2.1 KiB
PowerShell

<#
TPDT-287
Change the dump device location for Arizona DB to a U drive if this drive exists
TSC 18.03.2024 Creation
#>
$instance = "(local)\APSSQL"
$target_path = "U:" #This path must NOT have a trailing slash
if(Test-Path -Path $target_path){
$query=@"
SELECT * FROM sys.backup_devices
WHERE [name] IN
(
N'Arizona_Dump',
N'Arizona_dump_SECU'
)
AND physical_name like 'd:%'
"@
$ds_dumpDevices = Invoke-Sqlcmd -ServerInstance $instance -Query $query -Database master
if($ds_dumpDevices.Count -gt 0){
Write-Output "Path $target_path exists, ensuring Arizona dump devices are set to this drive"
$query = @"
IF EXISTS (SELECT 1 FROM [sys].[backup_devices] WHERE name='Arizona_Dump' AND [physical_name] LIKE 'D:%')
BEGIN
EXEC [sys].[sp_dropdevice] @logicalname = 'Arizona_Dump',@delfile = NULL;
PRINT 'Dump device Arizona_Dump removed';
END
IF NOT EXISTS (SELECT 1 FROM [sys].[backup_devices] WHERE name='Arizona_Dump')
BEGIN
EXEC master.dbo.sp_addumpdevice @devtype = N'disk',
@logicalname = N'Arizona_Dump',
@physicalname = N'$target_path\Arizona_Dump.bak';
PRINT 'Dump device Arizona_Dump created on U drive';
END
IF EXISTS (SELECT 1 FROM [sys].[backup_devices] WHERE name='Arizona_dump_SECU' AND [physical_name] LIKE 'D:%')
BEGIN
EXEC [sys].[sp_dropdevice] @logicalname = 'Arizona_dump_SECU',@delfile = NULL
PRINT 'Dump device Arizona_dump_SECU removed';
END
IF NOT EXISTS (SELECT 1 FROM [sys].[backup_devices] WHERE name='Arizona_dump_SECU')
BEGIN
EXEC master.dbo.sp_addumpdevice @devtype = N'disk',
@logicalname = N'Arizona_dump_SECU',
@physicalname = N'$target_path\Arizona_dump_SECU.bak';
PRINT 'Dump device Arizona_dump_SECU created on U drive';
END
"@
Invoke-Sqlcmd -ServerInstance $instance -Database master -Query $query
}
}
else{
Write-Output "Path $target_path does not exists, not touching dump devices"
}