From d01e9185296d6a3149fd8945c148f2250c8d3d1c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Oct 2025 15:55:25 +0000 Subject: [PATCH 1/3] Initial plan From 9141eb48d527ad445d8ce31293f0ae6f2016f59f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Oct 2025 16:03:56 +0000 Subject: [PATCH 2/3] Fix Login.EnumDatabaseMappings to return empty array instead of null Co-authored-by: shueybubbles <2224906+shueybubbles@users.noreply.github.com> --- .../SqlServer/Management/Smo/LoginBase.cs | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/src/Microsoft/SqlServer/Management/Smo/LoginBase.cs b/src/Microsoft/SqlServer/Management/Smo/LoginBase.cs index c5bf88cb..7a694635 100644 --- a/src/Microsoft/SqlServer/Management/Smo/LoginBase.cs +++ b/src/Microsoft/SqlServer/Management/Smo/LoginBase.cs @@ -1424,7 +1424,7 @@ public DatabaseMapping[] EnumDatabaseMappings() { CheckObjectState(); - DatabaseMapping[] mapping = null; + DatabaseMapping[] mapping = new DatabaseMapping[0]; if (!this.IsDesignMode) { Urn uMappings = this.Urn.ToString() + "/DatabaseMapping"; @@ -1434,18 +1434,13 @@ public DatabaseMapping[] EnumDatabaseMappings() if (dt.Rows.Count > 0) { mapping = new DatabaseMapping[dt.Rows.Count]; - } - else - { - return null; - } - - for (int iRow = 0; iRow < dt.Rows.Count; iRow++) - { - DataRow dr = dt.Rows[iRow]; - mapping[iRow] = new DatabaseMapping(Convert.ToString(dr["LoginName"], SmoApplication.DefaultCulture), - Convert.ToString(dr["DBName"], SmoApplication.DefaultCulture), - Convert.ToString(dr["UserName"], SmoApplication.DefaultCulture)); + for (int iRow = 0; iRow < dt.Rows.Count; iRow++) + { + DataRow dr = dt.Rows[iRow]; + mapping[iRow] = new DatabaseMapping(Convert.ToString(dr["LoginName"], SmoApplication.DefaultCulture), + Convert.ToString(dr["DBName"], SmoApplication.DefaultCulture), + Convert.ToString(dr["UserName"], SmoApplication.DefaultCulture)); + } } } else From 2fbadbf63596e91ef4a8cd61df2e2020bf0e6572 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Oct 2025 16:16:44 +0000 Subject: [PATCH 3/3] Fix DatabaseMappings query to avoid double evaluation of suser_sname Co-authored-by: shueybubbles <2224906+shueybubbles@users.noreply.github.com> --- .../SqlServer/Management/SqlEnum/xml/DatabaseMappings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Microsoft/SqlServer/Management/SqlEnum/xml/DatabaseMappings.xml b/src/Microsoft/SqlServer/Management/SqlEnum/xml/DatabaseMappings.xml index 97b6332a..74948ea5 100644 --- a/src/Microsoft/SqlServer/Management/SqlEnum/xml/DatabaseMappings.xml +++ b/src/Microsoft/SqlServer/Management/SqlEnum/xml/DatabaseMappings.xml @@ -29,12 +29,12 @@ begin - exec('use ' + @db_name + ' INSERT #loginmappings select suser_sname(u.sid), db_name(), u.name, null from dbo.sysusers u where suser_sname(u.sid) is not null') + exec('use ' + @db_name + ' INSERT #loginmappings select login_name, db_name(), u.name, null from dbo.sysusers u CROSS APPLY (SELECT suser_sname(u.sid) AS login_name) AS ln where ln.login_name is not null') - exec('use ' + @db_name + ' INSERT #loginmappings select suser_sname(u.sid), db_name(), u.name, null from sys.database_principals AS u where suser_sname(u.sid) is not null') + exec('use ' + @db_name + ' INSERT #loginmappings select login_name, db_name(), u.name, null from sys.database_principals AS u CROSS APPLY (SELECT suser_sname(u.sid) AS login_name) AS ln where ln.login_name is not null')