public InstanceParameters ConfigureInstance(JET_INSTANCE jetInstance, string path)
{
path = Path.GetFullPath(path);
var logsPath = path;
if (string.IsNullOrEmpty(configuration.Settings["Raven/Esent/LogsPath"]) == false)
{
logsPath = configuration.Settings["Raven/Esent/LogsPath"].ToFullPath();
}
var circularLog = GetValueFromConfiguration("Raven/Esent/CircularLog", true);
var logFileSizeInMb = GetValueFromConfiguration("Raven/Esent/LogFileSize", 64);
logFileSizeInMb = Math.Max(1, logFileSizeInMb / 4);
var maxVerPages = GetValueFromConfiguration("Raven/Esent/MaxVerPages", 512);
if (transactionalStorage != null)
{
transactionalStorage.MaxVerPagesValueInBytes = maxVerPages*1024*1024;
}
var maxVerPagesResult = TranslateToSizeInVersionPages(maxVerPages, 1024*1024);
var instanceParameters = new InstanceParameters(jetInstance)
{
CircularLog = circularLog,
Recovery = true,
NoInformationEvent = false,
CreatePathIfNotExist = true,
EnableIndexChecking = true,
TempDirectory = Path.Combine(logsPath, "temp"),
SystemDirectory = Path.Combine(logsPath, "system"),
LogFileDirectory = Path.Combine(logsPath, "logs"),
MaxVerPages = maxVerPagesResult,
PreferredVerPages = TranslateToSizeInVersionPages(GetValueFromConfiguration("Raven/Esent/PreferredVerPages", (int)(maxVerPagesResult * 0.85)), 1024 * 1024),
BaseName = "RVN",
EventSource = "Raven",
LogBuffers = TranslateToSizeInDatabasePages(GetValueFromConfiguration("Raven/Esent/LogBuffers", 8192), 1024),
LogFileSize = (logFileSizeInMb * 1024),
MaxSessions = MaxSessions,
MaxCursors = GetValueFromConfiguration("Raven/Esent/MaxCursors", 2048),
DbExtensionSize = TranslateToSizeInDatabasePages(GetValueFromConfiguration("Raven/Esent/DbExtensionSize", 8), 1024 * 1024),
AlternateDatabaseRecoveryDirectory = path
};
if (Environment.OSVersion.Version >= new Version(5, 2))
{
// JET_paramEnableIndexCleanup is not supported on WindowsXP
const int JET_paramEnableIndexCleanup = 54;
Api.JetSetSystemParameter(jetInstance, JET_SESID.Nil, (JET_param) JET_paramEnableIndexCleanup, 1, null);
}
return instanceParameters;
}