Network Management
Configuration Wizard fails with an error "Database Configuration Failed: @inmemory is not a parameter for procedure dbm_TimeSeriesConfigUpdate"
This article provides information about the error for Database Configuration Failed: @inmemory is not a parameter for procedure dbm_TimeSeriesConfigUpdate and steps in resolving the error.
First published date
Last published date
Overview
If the customer failed to upgrade from version 2024.2.1 to 2025.2.1 and rolled back to the previous version, when running the Configuration Wizard, you will get an error for Database Configuration Failed: @inmemory is not a parameter for procedure dbm_TimeSeriesConfigUpdate.
Looking at the Configuration Wizard.log in C:\ProgramData\SolarWinds\Logs\Orion, you will see the following error:
ERROR ColumStoreSchemaManager - Failure to call dbm_TimeSeriesConfigUpdate. System.Data.SqlClient.SqlException (0x80131904): @inmemory is not a parameter for procedure dbm_TimeSeriesConfigUpdate.
Product section
Cause
The snapshot of the Application Server was restored, but the Database backup was never restored. If you check the dbo.dbm_DatabaseProperties under the Tables folder, you would see that the version is not 2024.2.1.
Resolution
NOTE: Before making any changes, please make sure that you have a recent database backup, a snapshot of the VM, or a restore point of the physical server. If you have any database-related concerns, work with your DBA.
- Open SQL Server Management Studio and connect to the SolarWinds Platform SQL instance with admin credentials.
- Expand the SQL instance, right-click the SolarWindsOrion database, and select New Query.
- Paste the below query in the query window on the right and click Execute.
-- Scripts are not supported under any SolarWinds support program or service.
-- Scripts are provided AS IS without warranty of any kind. SolarWinds further
-- disclaims all warranties including, without limitation, any implied warranties
-- of merchantability or of fitness for a particular purpose. The risk arising
-- out of the use or performance of the scripts and documentation stays with you.
-- In no event shall SolarWinds or anyone else involved in the creation,
-- production or delivery of the scripts be liable for any damages whatsoever
-- (including, without limitation, damages for loss of business profits, business
-- interruption, loss of business information, or other pecuniary loss) arising
-- out of the use of or inability to use the scripts or documentation
USE [SolarWindsOrion]
GO
/****** Object: StoredProcedure [dbo].[dbm_TimeSeriesConfigUpdate] Script Date: 5/13/2025 11:50:35 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[dbm_TimeSeriesConfigUpdate]
(
@tab_name NVARCHAR(80),
@columns dbm_TimeSeriesColumnInfoType READONLY,
@inMemory bit = false,
@is_detail_only bit = 0
)
AS
BEGIN
MERGE INTO dbm_TimeSeriesConfig WITH (TABLOCKX) AS t
USING @columns AS s
ON (s.ColumnName = t.ColumnName AND @tab_name = t.TableName AND s.ColumnID = t.ColumnID)
WHEN NOT MATCHED BY TARGET THEN INSERT (
TableName,
ColumnID,
ColumnName,
DataType,
IsNullable,
IsPartitioningColumn,
IsNaturalKey,
IsGroupingColumn,
AggregateFunction,
ComputedColumnFormula,
IsPersisted,
IsDerivedMetric,
IsRankedMetric,
IsEnabled) VALUES (@tab_name, s.ColumnID, s.ColumnName, s.DataType, s.IsNullable, s.IsPartitioningColumn, s.IsNaturalKey, s.IsGroupingColumn, s.AggregateFunction, s.ComputedColumnFormula, s.IsPersisted, s.IsDerivedMetric, s.IsRankedMetric, s.IsEnabled)
WHEN NOT MATCHED BY SOURCE AND TableName=@tab_name THEN DELETE;
DECLARE @fileGroup nvarchar(64) = 'PRIMARY'
SELECT @fileGroup = [Value] FROM dbm_DatabaseProperties WHERE [Key] = 'TimeSeries.FileGroup'
IF @is_detail_only = 0
MERGE INTO dbm_TimeSerieProcessingConfig WITH (TABLOCKX) AS t
USING (
SELECT @tab_name as TableName, 'cur' as TableType, NULL as Granularity, 1 as RetentionDays, @inMemory as IsInMemoryTable, 1 as IsClusteredColumnstore, @fileGroup as Filegroup, NULL as DaysPerPartition, NULL as DaysAhead, NULL as DeleteBatchSize, NULL as MinutesPerInsertBatch, 1 as IsEnabled, @is_detail_only as IsDetailOnly UNION ALL
SELECT @tab_name as TableName, 'Detail' as TableType, 1 as Granularity, 7 as RetentionDays, 0 as IsInMemoryTable, 1 as IsClusteredColumnstore, @fileGroup as Filegroup, 1 as DaysPerPartition, 7 as DaysAhead, 10000 as DeleteBatchSize, 60 as MinutesPerInsertBatch, 1 as IsEnabled, @is_detail_only as IsDetailOnly UNION ALL
SELECT @tab_name as TableName, 'Hourly' as TableType, 2 as Granularity, 21 as RetentionDays, 0 as IsInMemoryTable, 0 as IsClusteredColumnstore, @fileGroup as Filegroup, 1 as DaysPerPartition, 7 as DaysAhead, 10000 as DeleteBatchSize, 1440 as MinutesPerInsertBatch, 1 as IsEnabled, @is_detail_only as IsDetailOnly UNION ALL
SELECT @tab_name as TableName, 'Daily' as TableType, 3 as Granularity, 180 as RetentionDays, 0 as IsInMemoryTable, 0 as IsClusteredColumnstore, @fileGroup as Filegroup, 7 as DaysPerPartition, 8 as DaysAhead, 10000 as DeleteBatchSize, 60 as MinutesPerInsertBatch, 1 as IsEnabled, @is_detail_only as IsDetailOnly
) AS s
ON (s.TableName = t.TableName AND s.TableType = t.TableType AND t.TableName=@tab_name)
WHEN NOT MATCHED BY TARGET THEN INSERT (
TableName,
TableType,
Granularity,
RetentionDays,
IsInMemoryTable,
IsClusteredColumnstore,
Filegroup,
DaysPerPartition,
DaysAhead,
DeleteBatchSize,
MinutesPerInsertBatch,
IsEnabled,
IsDetailOnly) VALUES (s.TableName, s.TableType, s.Granularity, s.RetentionDays, s.IsInMemoryTable, s.IsClusteredColumnstore, s.Filegroup, s.DaysPerPartition, s.DaysAhead, s.DeleteBatchSize, s.MinutesPerInsertBatch, s.IsEnabled, @is_detail_only)
WHEN NOT MATCHED BY SOURCE AND t.[TableName] = @tab_name THEN DELETE;
ELSE
MERGE INTO dbm_TimeSerieProcessingConfig WITH (TABLOCKX) AS t
USING (
SELECT @tab_name as TableName, 'cur' as TableType, NULL as Granularity, 1 as RetentionDays, @inMemory as IsInMemoryTable, 1 as IsClusteredColumnstore, @fileGroup as Filegroup, NULL as DaysPerPartition, NULL as DaysAhead, NULL as DeleteBatchSize, NULL as MinutesPerInsertBatch, 1 as IsEnabled, @is_detail_only as IsDetailOnly UNION ALL
SELECT @tab_name as TableName, 'Detail' as TableType, 1 as Granularity, 7 as RetentionDays, 0 as IsInMemoryTable, 1 as IsClusteredColumnstore, @fileGroup as Filegroup, 1 as DaysPerPartition, 7 as DaysAhead, 10000 as DeleteBatchSize, 60 as MinutesPerInsertBatch, 1 as IsEnabled, @is_detail_only as IsDetailOnly
) AS s
ON (s.TableName = t.TableName AND s.TableType = t.TableType AND t.TableName=@tab_name)
WHEN NOT MATCHED BY TARGET THEN INSERT (
TableName,
TableType,
Granularity,
RetentionDays,
IsInMemoryTable,
IsClusteredColumnstore,
Filegroup,
DaysPerPartition,
DaysAhead,
DeleteBatchSize,
MinutesPerInsertBatch,
IsEnabled,
IsDetailOnly) VALUES (s.TableName, s.TableType, s.Granularity, s.RetentionDays, s.IsInMemoryTable, s.IsClusteredColumnstore, s.Filegroup, s.DaysPerPartition, s.DaysAhead, s.DeleteBatchSize, s.MinutesPerInsertBatch, s.IsEnabled, @is_detail_only)
WHEN NOT MATCHED BY SOURCE AND t.[TableName] = @tab_name THEN DELETE;
END
- Run the Configuration Wizard, and it will complete with no errors.
NOTE; You will need to generate the SQL query using the SQL Server Management Studio with the same version. Follow the steps below when generating the SQL Query.
- Open SQL Server Management Studio and connect to the SolarWinds Platform SQL instance with admin credentials.
- Expand the SQL instance and the SolarWinds Orion Database.
- Scroll down and expand Programmability.
- Expand Stored Procedures.
- Scroll down and look for dbo.dbm_TimeSeriesConfigUpdate.
- Right-click on dbo.dbm_TimeSeriesConfigUpdate --> select Script Stored Procedure as --> Alter To -- > New Query Editor Window.
- Copy the SQL Query and share it with your DBA.