About Foreign Key Enable/Disable Rules
Published 19 March 2018
Sometimes during data masking or synchronization operations, it is necessary to disable foreign keys while the operation is in progress. Foreign keys can be disabled and enabled by building specific Command rules for the purpose or if there are many of them, a Foreign Key Manager rule can be defined to automate the enable/disable process. A Foreign Key Manager rule is a container which manages the execution of a number of subsidiary actions which perform the foreign key disable or enable.
Important Note: Foreign Key Managers are not commonly required. The Foreign Key Manager rule was included primarily for completeness so that it would be available on the rare occasions when it was required.
The implementation of the foreign key enable/disable operations as a manager was done to make the process simple and intuitive. An SQL Server database can have many foreign keys and each disable/enable action requires the execution of a distinct SQL statement. Each operation must be recorded in the log and any errors must be detected and reported. If such actions were configured as individual rules in the masking set, then the large quantity of such rules could visually overwhelm the masking set - leaving it hard to maintain the other masking rules. It is much more efficient to collect all of the actions together under one rule which acts as a manager. The Foreign Key Manager Rule form provides the ability to view, configure and manage the foreign key disable/enable actions and the Foreign Key Manager rule itself controls the execution of the configured disable/enable foreign key operations. Errors and statistics are handled by the Foreign Key Enable/Disable rule and presented to the user in a manageable summary form.
It is possible to configure the Foreign Key Manager to ignore a certain number (or all) of the errors received while processing the foreign key operations. This enables the Foreign Key Manager to continue operating even if errors occur. Be aware that ignoring the errors in the Foreign Key Manager just permits the Foreign Key Manager to complete as many operations as possible before returning an error and stopping the execution of the masking set. In other words, even if errors are ignored, any errors which occur during the foreign key disable/enable operations will mark the Foreign Key Manager rule as having failed and the error state will be reported to the Data Masker software for handling once the actions have completed.
Important Note: The Foreign Key Manager rule is only aware of the foreign keys given to it by the Rule Controller. To refresh the list of foreign keys known to the Foreign Key Manager rule, first refresh the foreign keys in the Rule Controller using the Refresh Foreign Keys button on Options tab of the edit Rule Controller form. This retrieves an up-to-date list from the target database. Once the Rule Controller has been updated, use the Refresh Foreign Key List button on the Foreign Key Manager Rule form to refresh the list inside the Foreign Key Manager rule.
Once the Foreign Key Manager rule has begun to execute, the foreign key disable/enable operations will proceed in parallel using the full number of threads specified on the Run Statistics tab until all specified foreign keys have been operated on.
If required, a Foreign Key Manager rule is usually configured (using Rule Blocks) to run in disable mode as the very first rule in the masking set. A second Foreign Key Manager rule is configured to run in enable mode as the very last rule in the masking set. This ensures the foreign keys are disabled during the masking operations and, hence, will not fire and slow the process down.
How to Create a New Foreign Key Manager rule