Setting up a History slave

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:

  1. On the main MDrivenServer:
    1. Ensure MDrivenServerSynk
    2. Switch from "Normal" to "Master"
    3. Copy/backup the database from the master - restore it in second MDrivenServer.
  2. In Second MDrivenServer change mode to "History Slave"
    1. In History Slave ensure Version compatible
    2. 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 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. 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.

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
This page was edited 97 days ago on 02/10/2024. What links here