internal/Remove-SqlDatabase.ps1
Function Remove-SqlDatabase { <# .SYNOPSIS Internal function. Uses SMO's KillDatabase to drop all user connections then drop a database. $server is an SMO server object. #> [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [Alias("ServerInstance", "SqlInstance")] [object]$SqlServer, [Parameter(Mandatory = $true)] [string]$DBName, [System.Management.Automation.PSCredential]$SqlCredential ) try { $server = Connect-SqlServer -SqlServer $SqlServer -SqlCredential $SqlCredential $server.KillDatabase($dbname) $server.refresh() Write-Output "Successfully dropped $dbname on $($server.name)" } catch { try { $server.databases[$dbname].Drop() Write-Output "Successfully dropped $dbname on $($server.name)" } catch { try { $null = $server.ConnectionContext.ExecuteNonQuery("DROP DATABASE $dbname") Write-Output "Successfully dropped $dbname on $($server.name)" } catch { return $false } } } } |