Subsetting troubleshooting and known limitations
Published 16 October 2023
Contents
All database engines
Source and target database need to use the same database engine
The source and target database both need to use the same database engine. For example, both could be SQL Server, or both could be PostgreSql.
Source and target database need to be identical
The source and target databases must have exactly the same schema to ensure data consistency.
Unsupported data types
Some column data types are not supported (or only partially so). This could cause subsetting to fail or it could cause an incomplete subset to be created (referential integrity will still be preserved).
For example, the HierarchyId SQL Server data type is only partially supported and the output subset may not contain the parents for the hierarchyid
data.
Self-references may be set to NULL
There is limited support for self-references (i.e. columns which reference a key in the same table). A subset will be produced, but the self-reference foreign key values may be set to NULL if the corresponding primary key value has not been included in the subset (please note that self reference columns will not affect which rows are included in the subset).
Desired database size deviates from specified value when using --desired-size
Desired size subsetting uses statistical methods to extract data at approximately the specified size. As a result, the target database may not be exactly the size as desired but it will be close. Desired size also performs more poorly on small databases (on the scale of MBs) due to higher statistical variance.
SQL Server
The subsetter doesn't copy history tables
If the source database uses SQL Server's system versioned temporal tables, the subsetter will copy across the current data in the table but the history will be ignored.
Disabled statistics
After subsetting, statistics that were previously not being update automatically (i.e. NORECOMPUTE) will be re-enabled.
Oracle
Oracle connection caveat
The schema that is going to be subset needs to have a create session privilege in Oracle.