diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SNI/SNIProxy.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SNI/SNIProxy.cs
index ca5587c098..ac4d3599dd 100644
--- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SNI/SNIProxy.cs
+++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SNI/SNIProxy.cs
@@ -579,10 +579,12 @@ internal static DataSource ParseServerName(string dataSource)
private void InferLocalServerName()
{
// If Server name is empty or localhost, then use "localhost"
- if (string.IsNullOrEmpty(ServerName) || IsLocalHost(ServerName))
+ if (string.IsNullOrEmpty(ServerName) || IsLocalHost(ServerName) ||
+ (Environment.MachineName.Equals(ServerName, StringComparison.CurrentCultureIgnoreCase) &&
+ _connectionProtocol == Protocol.Admin))
{
- ServerName = _connectionProtocol == Protocol.Admin ?
- Environment.MachineName : DefaultHostName;
+ // For DAC use "localhost" instead of the server name.
+ ServerName = DefaultHostName;
}
}
diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/ConnectivityTest.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/ConnectivityTest.cs
index 08113cbd3a..489a414ce9 100644
--- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/ConnectivityTest.cs
+++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ConnectivityTests/ConnectivityTest.cs
@@ -457,5 +457,41 @@ public static void ConnectionAliasTest()
key.DeleteValue(b.DataSource);
}
}
+
+ private static bool CanUseDacConnection()
+ {
+ if (!DataTestUtility.IsTCPConnStringSetup())
+ {
+ return false;
+ }
+
+ SqlConnectionStringBuilder b = new(DataTestUtility.TCPConnectionString);
+ if (!DataTestUtility.ParseDataSource(b.DataSource, out string hostname, out int port, out string instanceName))
+ {
+ return false;
+ }
+
+ if ("localhost".Equals(hostname.ToLower()) && (port.Equals(-1) || port.Equals(1433)) &&
+ string.IsNullOrEmpty(instanceName) && b.UserID != null && b.UserID.ToLower().Equals("sa"))
+ {
+ return true;
+ }
+
+ return false;
+ }
+
+ [ConditionalFact(nameof(CanUseDacConnection))]
+ public static void DacConnectionTest()
+ {
+ if (!CanUseDacConnection())
+ {
+ throw new Exception("Unable to use a DAC connection in this environment. Localhost + sa credentials required.");
+ }
+
+ SqlConnectionStringBuilder b = new(DataTestUtility.TCPConnectionString);
+ b.DataSource = "admin:localhost";
+ using SqlConnection sqlConnection = new(b.ConnectionString);
+ sqlConnection.Open();
+ }
}
}
diff --git a/src/Microsoft.Data.SqlClient/tests/tools/Microsoft.Data.SqlClient.TestUtilities/Microsoft.Data.SqlClient.TestUtilities.csproj b/src/Microsoft.Data.SqlClient/tests/tools/Microsoft.Data.SqlClient.TestUtilities/Microsoft.Data.SqlClient.TestUtilities.csproj
index 087d348c82..3bd48830cc 100644
--- a/src/Microsoft.Data.SqlClient/tests/tools/Microsoft.Data.SqlClient.TestUtilities/Microsoft.Data.SqlClient.TestUtilities.csproj
+++ b/src/Microsoft.Data.SqlClient/tests/tools/Microsoft.Data.SqlClient.TestUtilities/Microsoft.Data.SqlClient.TestUtilities.csproj
@@ -8,10 +8,9 @@
-
+
PreserveNewest
- config.json
-
+
\ No newline at end of file