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