@@ -94,6 +94,14 @@ function Remove-SqlDscDatabase
9494 $DropConnections
9595 )
9696
97+ begin
98+ {
99+ if ($Force.IsPresent -and -not $Confirm )
100+ {
101+ $ConfirmPreference = ' None'
102+ }
103+ }
104+
97105 process
98106 {
99107 if ($PSCmdlet.ParameterSetName -eq ' ServerObject' )
@@ -104,74 +112,90 @@ function Remove-SqlDscDatabase
104112 $ServerObject.Databases.Refresh ()
105113 }
106114
107- Write-Verbose - Message ($script :localizedData.Database_Remove -f $Name , $ServerObject.InstanceName )
108-
109- # Check if the database is a system database (cannot be dropped)
110- $systemDatabases = @ (' master' , ' model' , ' msdb' , ' tempdb' )
111- if ($Name -in $systemDatabases )
112- {
113- $errorMessage = $script :localizedData.Database_CannotRemoveSystem -f $Name
114- New-InvalidOperationException - Message $errorMessage
115- }
116-
117115 # Get the database object
118116 $DatabaseObject = $ServerObject.Databases [$Name ]
119117
120118 if (-not $DatabaseObject )
121119 {
122- $errorMessage = $script :localizedData.Database_NotFound -f $Name
123- New-InvalidOperationException - Message $errorMessage
120+ $errorMessage = $script :localizedData.Remove_SqlDscDatabase_NotFound -f $Name
121+
122+ $PSCmdlet.ThrowTerminatingError (
123+ [System.Management.Automation.ErrorRecord ]::new(
124+ [System.Management.Automation.ItemNotFoundException ]::new($errorMessage ),
125+ ' RSDD0002' , # cspell: disable-line
126+ [System.Management.Automation.ErrorCategory ]::ObjectNotFound,
127+ $Name
128+ )
129+ )
124130 }
125131 }
126132 else
127133 {
128134 $Name = $DatabaseObject.Name
129- Write-Verbose - Message ( $ script :localizedData .Database_Remove -f $Name , $DatabaseObject .Parent.InstanceName )
135+ }
130136
131- # Check if the database is a system database (cannot be dropped)
132- $systemDatabases = @ (' master' , ' model' , ' msdb' , ' tempdb' )
133- if ($Name -in $systemDatabases )
134- {
135- $errorMessage = $script :localizedData.Database_CannotRemoveSystem -f $Name
136- New-InvalidOperationException - Message $errorMessage
137- }
137+ # Check if the database is a system database (cannot be dropped)
138+ if ($Name -in @ (' master' , ' model' , ' msdb' , ' tempdb' ))
139+ {
140+ $errorMessage = $script :localizedData.Database_CannotRemoveSystem -f $Name
141+
142+ $PSCmdlet.ThrowTerminatingError (
143+ [System.Management.Automation.ErrorRecord ]::new(
144+ [System.InvalidOperationException ]::new($errorMessage ),
145+ ' RSDD0001' , # cspell: disable-line
146+ [System.Management.Automation.ErrorCategory ]::InvalidOperation,
147+ $Name
148+ )
149+ )
138150 }
139151
140- $verboseDescriptionMessage = $script :localizedData.Database_Remove_ShouldProcessVerboseDescription -f $Name , $DatabaseObject.Parent.InstanceName
141- $verboseWarningMessage = $script :localizedData.Database_Remove_ShouldProcessVerboseWarning -f $Name
152+ $descriptionMessage = $script :localizedData.Database_Remove_ShouldProcessDescription -f $Name , $DatabaseObject.Parent.InstanceName
153+ $confirmationMessage = $script :localizedData.Database_Remove_ShouldProcessConfirmation -f $Name
142154 $captionMessage = $script :localizedData.Database_Remove_ShouldProcessCaption
143155
144- if ($Force .IsPresent -or $ PSCmdlet.ShouldProcess ($verboseDescriptionMessage , $verboseWarningMessage , $captionMessage ))
156+ if ($PSCmdlet.ShouldProcess ($descriptionMessage , $confirmationMessage , $captionMessage ))
145157 {
146- try
158+ # Drop all active connections if requested
159+ if ($DropConnections.IsPresent )
147160 {
148- # Drop all active connections if requested
149- if ($DropConnections.IsPresent )
161+ Write-Verbose - Message ($script :localizedData.Database_DroppingConnections -f $Name )
162+
163+ try
150164 {
151- Write-Verbose - Message ($script :localizedData.Database_DroppingConnections -f $Name )
152-
153- try
154- {
155- $DatabaseObject.UserAccess = ' Single'
156- $DatabaseObject.Alter ([Microsoft.SqlServer.Management.Smo.TerminationClause ]::RollbackTransactionsImmediately)
157- }
158- catch
159- {
160- $errorMessage = $script :localizedData.Database_DropConnectionsFailed -f $Name
161- New-InvalidOperationException - Message $errorMessage - ErrorRecord $_
162- }
165+ $DatabaseObject.UserAccess = [Microsoft.SqlServer.Management.Smo.DatabaseUserAccess ]::Single
166+ $DatabaseObject.Alter ([Microsoft.SqlServer.Management.Smo.TerminationClause ]::RollbackTransactionsImmediately)
163167 }
168+ catch
169+ {
170+ $errorMessage = $script :localizedData.Database_DropConnectionsFailed -f $Name
171+
172+ $PSCmdlet.ThrowTerminatingError (
173+ [System.Management.Automation.ErrorRecord ]::new(
174+ [System.InvalidOperationException ]::new($errorMessage , $_.Exception ),
175+ ' RSDD0004' , # cspell: disable-line
176+ [System.Management.Automation.ErrorCategory ]::InvalidOperation,
177+ $DatabaseObject
178+ )
179+ )
180+ }
181+ }
164182
165- Write-Verbose - Message ( $ script :localizedData .Database_Removing -f $Name )
166-
183+ try
184+ {
167185 $DatabaseObject.Drop ()
168-
169- Write-Verbose - Message ($script :localizedData.Database_Removed -f $Name )
170186 }
171187 catch
172188 {
173189 $errorMessage = $script :localizedData.Database_RemoveFailed -f $Name , $DatabaseObject.Parent.InstanceName
174- New-InvalidOperationException - Message $errorMessage - ErrorRecord $_
190+
191+ $PSCmdlet.ThrowTerminatingError (
192+ [System.Management.Automation.ErrorRecord ]::new(
193+ [System.InvalidOperationException ]::new($errorMessage , $_.Exception ),
194+ ' RSDD0005' , # cspell: disable-line
195+ [System.Management.Automation.ErrorCategory ]::InvalidOperation,
196+ $DatabaseObject
197+ )
198+ )
175199 }
176200 }
177201 }
0 commit comments