Skip to content

Commit 67fac7f

Browse files
Get-DbaDbIdentity, Set-DbaDbIdentity, Invoke-DbaDbDbccUpdateUsage - Normalize table names via Get-ObjectNameParts
Fixes Group 5 of issue #9010: DBCC commands failed when bare dotted table names like Gross.Table.Name were passed - SQL Server interpreted them as 3-part database.schema.table names. Bracketed names like [Gross.Table.Name] already worked. Now both forms produce correct bracketed T-SQL identifiers. Co-authored-by: Andreas Jordan <andreasjordan@users.noreply.github.com>
1 parent 8987045 commit 67fac7f

3 files changed

Lines changed: 26 additions & 6 deletions

File tree

public/Get-DbaDbIdentity.ps1

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,13 @@ function Get-DbaDbIdentity {
129129
foreach ($tbl in $Table) {
130130
try {
131131
$query = $StringBuilder.ToString()
132-
$query = $query.Replace('#options#', "'$($tbl)'")
132+
$nameParts = Get-ObjectNameParts -ObjectName $tbl
133+
if ($nameParts.Schema) {
134+
$tblIdentifier = "[$($nameParts.Schema)].[$($nameParts.Name)]"
135+
} else {
136+
$tblIdentifier = "[$($nameParts.Name)]"
137+
}
138+
$query = $query.Replace('#options#', "'$($tblIdentifier)'")
133139

134140
if ($Pscmdlet.ShouldProcess($server.Name, "Execute the command $query against $instance")) {
135141
Write-Message -Message "Query to run: $query" -Level Verbose

public/Invoke-DbaDbDbccUpdateUsage.ps1

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,14 @@ function Invoke-DbaDbDbccUpdateUsage {
163163
try {
164164
$query = $StringBuilder.ToString()
165165
if (Test-Bound -ParameterName Table) {
166+
if ($Table -notmatch '^\d+$') {
167+
$tableNameParts = Get-ObjectNameParts -ObjectName $Table
168+
if ($tableNameParts.Schema) {
169+
$tableIdentifier = "[$($tableNameParts.Schema)].[$($tableNameParts.Name)]"
170+
} else {
171+
$tableIdentifier = "[$($tableNameParts.Name)]"
172+
}
173+
}
166174
if (Test-Bound -ParameterName Index) {
167175
if ($Table -match '^\d+$') {
168176
if ($Index -match '^\d+$') {
@@ -172,16 +180,16 @@ function Invoke-DbaDbDbccUpdateUsage {
172180
}
173181
} else {
174182
if ($Index -match '^\d+$') {
175-
$query = $query.Replace('#options#', "'$($db.name)', '$Table', $Index")
183+
$query = $query.Replace('#options#', "'$($db.name)', '$tableIdentifier', $Index")
176184
} else {
177-
$query = $query.Replace('#options#', "'$($db.name)', '$Table', '$Index'")
185+
$query = $query.Replace('#options#', "'$($db.name)', '$tableIdentifier', '$Index'")
178186
}
179187
}
180188
} else {
181189
if ($Table -match '^\d+$') {
182190
$query = $query.Replace('#options#', "'$($db.name)', $Table")
183191
} else {
184-
$query = $query.Replace('#options#', "'$($db.name)', '$Table'")
192+
$query = $query.Replace('#options#', "'$($db.name)', '$tableIdentifier'")
185193
}
186194
}
187195
} else {

public/Set-DbaDbIdentity.ps1

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,16 @@ function Set-DbaDbIdentity {
145145
foreach ($tbl in $Table) {
146146
try {
147147
$query = $StringBuilder.ToString()
148+
$nameParts = Get-ObjectNameParts -ObjectName $tbl
149+
if ($nameParts.Schema) {
150+
$tblIdentifier = "[$($nameParts.Schema)].[$($nameParts.Name)]"
151+
} else {
152+
$tblIdentifier = "[$($nameParts.Name)]"
153+
}
148154
if (Test-Bound -Not -ParameterName ReSeedValue) {
149-
$query = $query.Replace('#options#', "'$($tbl)'")
155+
$query = $query.Replace('#options#', "'$($tblIdentifier)'")
150156
} else {
151-
$query = $query.Replace('#options#', "'$($tbl)', RESEED, $($ReSeedValue)")
157+
$query = $query.Replace('#options#', "'$($tblIdentifier)', RESEED, $($ReSeedValue)")
152158
}
153159

154160
if ($Pscmdlet.ShouldProcess($server.Name, "Execute the command $query against $instance")) {

0 commit comments

Comments
 (0)