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')