File tree Expand file tree Collapse file tree 1 file changed +20
-1
lines changed Expand file tree Collapse file tree 1 file changed +20
-1
lines changed Original file line number Diff line number Diff line change @@ -121,7 +121,26 @@ function Remove-DbaDbUser {
121121
122122 if ($Pscmdlet.ShouldProcess ($user , " Removing user from Database $db on target $server " )) {
123123 # Drop Schemas owned by the user before dropping the user
124- $schemaUrns = $user.EnumOwnedObjects () | Where-Object Type -EQ Schema
124+ # Azure SQL Database doesn't support EnumOwnedObjects(), so we need to use T-SQL query instead
125+ if ($server.DatabaseEngineType -eq " SqlAzureDatabase" ) {
126+ $splatQuery = @ {
127+ SqlInstance = $server
128+ Database = $db.Name
129+ Query = " SELECT s.name FROM sys.schemas s WHERE s.principal_id = USER_ID('$ ( $user.Name ) ')"
130+ EnableException = $true
131+ }
132+ $ownedSchemaNames = Invoke-DbaQuery @splatQuery | Select-Object - ExpandProperty name
133+ $schemaUrns = @ ()
134+ foreach ($schemaName in $ownedSchemaNames ) {
135+ $schema = $db.Schemas [$schemaName ]
136+ if ($schema ) {
137+ $schemaUrns += $schema.Urn
138+ }
139+ }
140+ } else {
141+ $schemaUrns = $user.EnumOwnedObjects () | Where-Object Type -EQ Schema
142+ }
143+
125144 if ($schemaUrns ) {
126145 Write-Message - Level Verbose - Message " User $user owns $ ( $schemaUrns.Count ) schema(s)."
127146
You can’t perform that action at this time.
0 commit comments