From 806e4cba2bb1b5657e78f0daff998184bb4f95e7 Mon Sep 17 00:00:00 2001 From: Simone Bizzotto Date: Tue, 11 Feb 2025 00:38:09 +0100 Subject: [PATCH 1/2] Connect-DbaInstance, honor -Database parameter --- public/Connect-DbaInstance.ps1 | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/public/Connect-DbaInstance.ps1 b/public/Connect-DbaInstance.ps1 index e8e4697123..ae3e05c640 100644 --- a/public/Connect-DbaInstance.ps1 +++ b/public/Connect-DbaInstance.ps1 @@ -673,6 +673,18 @@ function Connect-DbaInstance { $sqlConnectionInfo.Password = $csb.Password $null = $csb.Remove('Password') } + # look for 'Initial Catalog' and 'Database' in the connection string + $specifiedDatabase = $csb['Database'] + if ($specifiedDatabase -eq '') { + $specifiedDatabase = $csb['Initial Catalog'] + } + if ($Database -and $Database -ne $specifiedDatabase) { + Write-Message -Level Debug -Message "Database specified in connection string '$specifiedDatabase' does not match Database parameter '$Database'. Database parameter will be used." + # clear both, in order to not be overridden later by setting all AddtionalParameters + $csb.Remove('Database') + $csb.Remove('Initial Catalog') + $sqlConnectionInfo.DatabaseName = $Database + } # Add all remaining parts of the connection string as additional parameters. $sqlConnectionInfo.AdditionalParameters = $csb.ConnectionString From 2c9c1ff0541ae6ee54b05b84be352a122cfe285a Mon Sep 17 00:00:00 2001 From: Simone Bizzotto Date: Tue, 11 Feb 2025 00:45:22 +0100 Subject: [PATCH 2/2] Connect-DbaInstance, clear only if keys are there --- public/Connect-DbaInstance.ps1 | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/Connect-DbaInstance.ps1 b/public/Connect-DbaInstance.ps1 index ae3e05c640..9b270836e7 100644 --- a/public/Connect-DbaInstance.ps1 +++ b/public/Connect-DbaInstance.ps1 @@ -681,8 +681,12 @@ function Connect-DbaInstance { if ($Database -and $Database -ne $specifiedDatabase) { Write-Message -Level Debug -Message "Database specified in connection string '$specifiedDatabase' does not match Database parameter '$Database'. Database parameter will be used." # clear both, in order to not be overridden later by setting all AddtionalParameters - $csb.Remove('Database') - $csb.Remove('Initial Catalog') + if ($csb.ShouldSerialize('Database')) { + $csb.Remove('Database') + } + if ($csb.ShouldSerialize('Initial Catalog')) { + $csb.Remove('Initial Catalog') + } $sqlConnectionInfo.DatabaseName = $Database }