Read here on why you want a History slave server - Purpose of History Server
Recent changes makes it possible to use SQLCompact to test the MDriven History server - but you will most likely need more space than what SQL compact can handle.
Steps:
- On the main MDrivenServer:
- Ensure MDrivenServerSynk
- Switch from "Normal" to "Master"
- Copy/backup the database from the master - restore it in second MDrivenServer.
- In Second MDrivenServer change mode to "History Slave"
- In History Slave ensure Version compatible
- In History point out the master MDrivenServer and set user and pwd for master.
Test by making changes towards Master - within short changes show up in History slave
Thinning,culling and truncating a History server
On classes set tagged value NoHistory=true to make HistoryServer skip this class for versioning. This may be desirable when having fast moving reference data you do not own - like daily imports from other systems that you do not deem important enough to track. It is currently not supported to evolve from Versioned to not versioned - so to use NoHistory in History make sure you have this set from the start - or recreate the table to force it through.
Also tagged value HistoryKeepWeeks=NoOfWeeks(int) can be used on Classes - this may be good to keep shorter history on some than on others. This may lead to false history perspective - if old version reference other object that has been culled by a shorter HistoryKeepWeeks - that link will then turn up as null - when in fact it had a value at the time.
The history is culled via pressing a button in admin/MasterSlave/TruncHistory3Years - this will change to be automatic in later releases.
In sqlServer you can use this script to find where you have the most rows in your historyserver - this may be a good indicator if you need thinning:
SELECT t.NAME AS TableName, s.Name AS SchemaName, p.rows, SUM(a.total_pages) * 8 AS TotalSpaceKB, CAST(ROUND(((SUM(a.total_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS TotalSpaceMB, SUM(a.used_pages) * 8 AS UsedSpaceKB, CAST(ROUND(((SUM(a.used_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS UsedSpaceMB, (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB, CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS UnusedSpaceMB FROM sys.tables t INNER JOIN sys.indexes i ON t.OBJECT_ID = i.object_id INNER JOIN sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id INNER JOIN sys.allocation_units a ON p.partition_id = a.container_id LEFT OUTER JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.NAME NOT LIKE 'dt%' AND t.is_ms_shipped = 0 AND i.OBJECT_ID > 255 GROUP BY t.Name, s.Name, p.Rows ORDER BY p.rows DESC, t.Name