diff --git a/src/Umbraco.Core/Persistence/UmbracoDatabaseFactory.cs b/src/Umbraco.Core/Persistence/UmbracoDatabaseFactory.cs
index dc86ff060c..23c01e7768 100644
--- a/src/Umbraco.Core/Persistence/UmbracoDatabaseFactory.cs
+++ b/src/Umbraco.Core/Persistence/UmbracoDatabaseFactory.cs
@@ -119,23 +119,9 @@ namespace Umbraco.Core.Persistence
}
///
- public bool CanConnect
- {
- get
- {
- if (!Configured || !DbConnectionExtensions.IsConnectionAvailable(_connectionString, _providerName)) return false;
+ public bool CanConnect => Configured && DbConnectionExtensions.IsConnectionAvailable(_connectionString, _providerName);
- if (_serverVersionDetected) return true;
-
- if (_databaseType.IsSqlServer())
- DetectSqlServerVersion();
- _serverVersionDetected = true;
-
- return true;
- }
- }
-
- private void DetectSqlServerVersion()
+ private DatabaseType DetectSqlServerVersion()
{
// replace NPoco database type by a more efficient one
@@ -152,22 +138,28 @@ namespace Umbraco.Core.Persistence
fromSettings = true;
}
+ DatabaseType databaseType;
switch (versionName)
{
case SqlServerSyntaxProvider.VersionName.V2008:
- _databaseType = DatabaseType.SqlServer2008;
+ databaseType = DatabaseType.SqlServer2008;
break;
case SqlServerSyntaxProvider.VersionName.V2012:
case SqlServerSyntaxProvider.VersionName.V2014:
case SqlServerSyntaxProvider.VersionName.V2016:
case SqlServerSyntaxProvider.VersionName.V2017:
- _databaseType = DatabaseType.SqlServer2012;
+ databaseType = DatabaseType.SqlServer2012;
break;
// else leave unchanged
+ default:
+ databaseType = _databaseType;
+ break;
}
_logger.Debug("SqlServer {SqlServerVersion}, DatabaseType is {DatabaseType} ({Source}).",
- versionName, _databaseType, fromSettings ? "settings" : "detected");
+ versionName, databaseType, fromSettings ? "settings" : "detected");
+
+ return databaseType;
}
///
@@ -224,6 +216,9 @@ namespace Umbraco.Core.Persistence
if (_npocoDatabaseFactory == null) throw new NullReferenceException("The call to UmbracoDatabaseFactory.Config yielded a null UmbracoDatabaseFactory instance.");
+ if (_databaseType.IsSqlServer() && DbConnectionExtensions.IsConnectionAvailable(_connectionString, _providerName))
+ _databaseType = DetectSqlServerVersion();
+
SqlContext = new SqlContext(_sqlSyntax, _databaseType, _pocoDataFactory, _mappers);
_logger.Debug("Configured.");