Seven years after GDPR came into force, European regulators have issued over 2,245 fines totalling nearly 5.65 billion euros — and enforcement shows no sign of slowing down. Yet most compliance conversations focus on legal and governance failures, while the deeper technical root causes go unaddressed.
This article examines three recurring database-layer failures documented in the EDPB’s 2026 enforcement findings: the complexity of executing erasure across relational schemas, the backup paradox that can silently undo compliant deletions, and the audit log contradiction that traps organizations between two competing obligations.
We then look at how SQL Server, PostgreSQL, Oracle, and MySQL each handle these requirements — and where the gaps remain.
The General Data Protection Regulation (GDPR) came into force in May 2018. By March 2025 – seven years later -European regulators had issued more than 2,245 recorded fines, totaling approximately 5.65 billion euros.
That’s according to the CMS GDPR Enforcement Tracker, but it’s not the only source we have to work with. DLA Piper’s 2025 GDPR fines and data breach survey reported 1.2 billion euros in fines issued in a single twelve-month period, across financial services, healthcare, retail, energy, and the public sector.
Yes – 1.2 billion euros in fines in just one year.
Why, exactly, is this happening?
The standard explanation for persistent GDPR compliance failures is that organizations have legal and governance problems. Insufficient consent mechanisms, inadequate privacy policies, and missing data protection officers – to name a few.
None of these, however, explain where a large share of the actual failures originate. Many of the recurring compliance gaps the GDPR enforcement record documents are technical database problems that no legal team can solve, and no policy document can paper over.
On February 18, 2026, the European Data Protection Board published the findings from its 2025 Coordinated Enforcement Framework action on the right to erasure under Article 17 of the GDPR. This was the fourth CEF action in four years, and 32 Data Protection Authorities across the European Economic Area (EEA) participated.
Nine launched formal investigations and, all in all, 23 fact-finding exercises were conducted across 764 controllers – spanning SMEs, multinationals, and public sector organizations.
ReedSmith’s analysis of the report summarized its central finding plainly, identifying seven systemic weaknesses, with the two most persistent and consequential being the absence of systematic internal data classification and the lack of automated deletion mechanisms. Both of these are database engineering problems.
This article works through three specific database-layer failures that the EDPB report and enforcement record document consistently. We’ll then examine how SQL Server, PostgreSQL, Oracle, and MySQL each approach the technical requirements – and where the gaps are on each platform.
The GDPR erasure problem is a database architecture problem – here’s why
Article 17 of the GDPR grants individuals the right to have their personal data erased when it’s no longer needed for the purpose for which it was collected.
The regulation calls for erasure without undue delay. In a simple flat database, this is manageable. In any production relational database of meaningful complexity, however, it’s one of the hardest technical requirements in the regulation.
Consider a normalized e-commerce schema. A table of customers, for example, holds a ton of personal data: name, email, address, date of birth. However, deleting the customer row in the customers table does not delete the data. It breaks referential integrity on every table that references it, unless you have decided in advance what to do with each dependency.
In this instance, the options available to you are:
Cascade the deletion through all dependent tables (which may violate financial record-keeping obligations for transaction data under accounting law).
Null the foreign keys and orphan the dependent records (which corrupts data integrity).
Pseudonymize the personal identifiers – replacing them with anonymous tokens that preserve structural relationships without identifying information.
The EDPB’s February 2026 report was explicit about two recurring failures here. First, many controllers relied on anonymization techniques that were weak or amounted to mere pseudonymization, leaving re-identification risks.
Important note
The EDPB is currently developing updated anonymization guidelines following the CJEU ruling in EDPS v SRB (Case C-413/23P). Controllers using pseudonymization as an erasure substitute are on uncertain legal ground until that guidance is issued.
Second, some controllers treated account deactivation as equivalent to erasure. A user deletes their account. The application removes the login credentials. The underlying personal data remains intact in the database. The EDPB was explicit that this does not satisfy Article 17. Deactivating an account is only a service-layer operation. Erasure means deleting or sufficiently anonymizing the personal data itself.
The backup paradox
Once the erasure is correctly executed in the live database, the compliance obligation does not end. It extends to every backup taken before the deletion occurred.
An organization taking daily database backups has a retention schedule. Backups from the last 30 days are stored online, while older backups are archived to cheaper storage. When a customer submits an erasure request, the database team correctly deletes all of that customer’s personal data from the live tables. The application then confirms the erasure.
Every backup taken before that deletion still contains the customer’s personal data in fully recoverable form. If any of those backups is restored during a disaster recovery event, a data investigation, or a development environment refresh, the deleted data reappears in the live system. The right to erasure has been satisfied in the live database, yet simultaneously undermined by the backup infrastructure.
The GDPR does not prescribe a specific technical approach to backup erasure, and supervisory authorities have taken varying positions.
The EDPB’s 2026 report found that half of the responding DPAs raised concerns that many controllers had no specific procedures for erasure in the backup context. Some controllers had no procedures at all, relying exclusively on automatic overwrite cycles. The report calls for the EDPB to issue guidance on what ‘without undue delay’ means specifically in the context of backups.
The practical compliance position, based on severalnines.com’s analysis of GDPR and database backups and enforcement practice, involves three things:
- Documenting your backup retention schedule clearly in your privacy notice;
- Ensuring that backup restoration does not re-introduce data that has been legitimately erased from live systems;
- Reducing backup retention periods for data categories that carry high erasure request volume.
Protect your data. Demonstrate compliance.
With Redgate, stay ahead of threats with real-time monitoring and alerts, protect sensitive data with automated discovery & masking, and demonstrate compliance with traceability across every environment.
Learn more
The audit log contradiction
Here’s a scenario that regularly catches well-intentioned organizations out in GDPR audits:
A data subject requests erasure. The database team executes the deletion correctly. Six months later, a supervisory authority requests evidence that the deletion was carried out.
The evidence for this should be in your audit logs. But audit logs, if they capture the content of operations, contain the personal data that was deleted. To produce the audit trail proving that you deleted the data, you must produce logs that contain the data you deleted.
This is a genuine regulatory tension between two legitimate obligations: the obligation to maintain audit trails for accountability and security, and the obligation to erase personal data on request. The resolution is to design audit logging so that it captures what happened, without capturing the content of what changed.
What does a GDPR-compliant audit entry look like?
A GDPR-compliant audit entry looks like: ‘Customer record with internal ID 847392 was deleted at 14:23 UTC on 2025-03-15 by process data-erasure-job.’ It does not contain the customer’s name, email, or any other personal data. Most default audit logging configurations for all four major database platforms do not produce entries in this format without deliberate configuration.
Building this kind of audit logging requires the following:
- Deciding in advance what the log entry should capture;
- Configuring the database audit tooling to capture at the right level of detail;
- Testing that the resulting logs contain what a regulator would need to see, without containing what the regulation prohibits being retained.
Data retention: why policy is not a technical control
Nearly every organization subject to the GDPR has a data retention policy. Most of them say something like: ‘personal data will be deleted after two years following the end of the customer relationship, unless legal obligations require longer retention.’
The EDPB’s 2026 report identified this explicitly: many organizations have policies but no automated deletion mechanisms to enforce them.
Data accumulates for five, seven, or ten years because the policy says two years, but nothing in the database actually enforces it.
Building automated retention enforcement in a relational database is not trivial. It requires a complete inventory of which tables contain personal data subject to retention obligations. It also requires documented mapping of legal retention periods to specific database objects, because different data categories have different requirements.
Financial transaction data, for example, may have a legal obligation to be retained for seven to ten years under accounting law – even after the customer relationship has ended. Marketing profile data, meanwhile, may need to be deleted within months.
It requires cascade logic that handles dependent tables correctly without breaking referential integrity or downstream applications. And it requires testing that the automated deletion processes run on schedule, handle edge cases, and do not produce errors that cause the deletion jobs to fail silently.
Ultimately, this is a database engineering project. It requires schema knowledge, a data inventory, and coordination between the database team and the legal team. The latter defines the retention requirements, while the former has to actually build the implementation.
In most organizations failing GDPR audits on retention, these two teams have never had that conversation in sufficient technical detail.
SQL Server and GDPR
SQL Server has mature capabilities for most of what GDPR’s technical requirements demand.
First, SQL Server Audit provides comprehensive event logging at both the server and database level. Then there’s Always Encrypted, which allows column-level encryption where even database administrators cannot read the encrypted values without the column encryption keys. And finally, Row-Level Security enables fine-grained access control, and Transparent Data Encryption protects data at rest.
The challenge is configuration, not capability. SQL Server Audit is powerful but requires deliberate policy design to capture what GDPR audits need without capturing the personal data content of every operation.
Organizations that deployed SQL Server Audit years ago for a different compliance purpose, PCI, SOX, or internal auditing, often have audit policies that do not satisfy the Article 17 accountability requirements regulators now look for. Revisiting that configuration is work that most teams defer until an audit forces the issue.
Fast, reliable and consistent SQL Server development…
…with SQL Toolbelt Essentials. 10 ingeniously simple tools for accelerating development, reducing risk, and standardizing workflows.
Learn more & try for free
PostgreSQL and GDPR
PostgreSQL’s native audit capabilities are limited for GDPR compliance purposes.
The core postgresql.conf logging settings can capture connections, queries, and errors. However, they’re not designed for fine-grained data access auditing, and don’t produce the structured logs that GDPR audits require without significant configuration.
The standard solution for production PostgreSQL environments handling regulated data is pgaudit. This is an open-source extension that provides session-level and object-level audit logging equivalent to what enterprise database products offer natively.
pgaudit can log who accessed which tables and when (at the row level if needed), without capturing the content of the data accessed. Organizations running PostgreSQL for GDPR-regulated workloads without pgaudit (or a commercial equivalent) frequently discover that they have no adequate audit trail for the period preceding the audit. Building the trail after the fact is not an option.
Oracle and GDPR
Oracle’s Unified Auditing, introduced in Oracle 12c and the default audit architecture from Oracle 21c onward, provides the most comprehensive out-of-box audit capabilities of the four platforms covered here.
Fine-grained auditing allows audit policies to capture specific columns in specific tables under specific conditions. Oracle Label Security provides row-level classification. And, finally, Oracle Data Masking and Subsetting enables pseudonymization at the column level.
Oracle’s compliance tooling is mature enough for GDPR requirements. The challenge is that complex Oracle environments often have audit configurations that were established during initial deployment and then forgotten about as the data processing activities of the business evolved.
An audit policy that captured what was required for a 2017 PCI audit, for example, may not capture what’s needed for an Article 17 compliance review in 2026.
MySQL and GDPR
MySQL’s audit story depends on which edition you’re running. MySQL Enterprise Edition includes the MySQL Enterprise Audit plugin, which provides comprehensive session and query-level audit logging suitable for compliance use. However, MySQL Community Edition – which a substantial number of organizations run for cost reasons – does not include a native audit plugin.
Third-party and open-source audit solutions exist for MySQL Community, but many organizations running MySQL Community for GDPR-regulated workloads haven’t implemented any of them. The result is a compliance gap that is not immediately obvious from looking at the database configuration.
An organization can have MySQL running correctly, handling data reliably, with no error logs or signs of trouble – yet not have an audit trail that could satisfy a regulatory request for evidence of erasure execution.
Why a data inventory is so important in 2026
The EDPB’s report identified the absence of systematic internal data classification as one of the two most consequential weaknesses it found. This is the root problem that makes everything else harder. Every other technical control depends on knowing what data you have, where it lives, and what applies to it.
Without a data inventory, you have the following issues:
- You can’t implement automated retention enforcement, because you don’t know which tables to apply it to!
- You can’t respond completely to erasure requests…because you can’t identify all the places where the requested data exists.
- You cannot configure meaningful audit logging, because you don’t know which tables require it.
- You cannot assess your backup exposure, because you don’t know which backup archives contain regulated data.
What a data inventory must include to satisfy GDPR compliance
A data inventory for GDPR purposes is a documented record of:
- Which tables in which databases contain personal data subject to the GDPR;
- What categories of personal data each table contains (contact information, financial data, health data, behavioral data);
- The legal basis for processing;
- The applicable retention period;
- The dependent tables that reference the personal data.
AWS’s GDPR compliance guidance for Redshift describes a similar inventory-first approach as the prerequisite for implementing the right to erasure technically, and the same logic applies across platforms.
In summary
For legacy systems with years of accumulated schema changes and undocumented tables, building this inventory is genuinely difficult work. Starting with the tables that receive the highest volume of erasure requests, and building outward from there, produces the most compliance value for the most effort in the shortest time.
The EDPB’s 2026 coordinated enforcement action on erasure is the fourth in four years. The 2026 action will focus on transparency and information obligations. The scrutiny is not ending with erasure. Organizations that built a data inventory to address erasure compliance are positioned to respond to the next wave. Organizations that did not, are likely to be unprepared for both.
FAQs: Why databases are still failing GDPR compliance audits in 2026
1. What is Article 17 of the GDPR?
Article 17 grants individuals the right to request deletion of their personal data when it is no longer needed for the purpose it was collected. Organizations must act without undue delay, which applies not just to live databases but to all systems where that data exists.
2. Does deleting a user account satisfy a GDPR erasure request?
No. Deactivating or deleting an account is a service-layer operation. The EDPB has been explicit that unless the underlying personal data is deleted or sufficiently anonymized in the database itself, the erasure obligation under Article 17 is not met.
3. Do GDPR erasure obligations apply to database backups?
Yes, and this is one of the most practically difficult aspects of compliance. Backups taken before a deletion still contain the erased data in recoverable form. While the EDPB has yet to issue definitive guidance on timelines for backup erasure, organizations are expected to have documented procedures and reduced retention periods for high-risk data categories.
4. What is the difference between anonymization and pseudonymization under GDPR?
Pseudonymization replaces personal identifiers with tokens but the original data can still be re-identified with a key. True anonymization makes re-identification impossible. GDPR obligations, including the right to erasure, do not apply to genuinely anonymized data — but the EDPB has found that many organizations are using pseudonymization and incorrectly treating it as anonymization.
5. Which database platform has the strongest native GDPR compliance capabilities?
Oracle’s Unified Auditing and fine-grained audit policies provide the most comprehensive out-of-box tooling. SQL Server is also well-equipped but requires deliberate configuration. PostgreSQL requires the pgaudit extension for adequate audit logging. MySQL Community Edition has no native audit plugin, making it the most challenging platform for regulated workloads without additional tooling.
6. What is a data inventory and why does GDPR require one?
A data inventory is a documented record of which tables contain personal data, what categories they hold, the legal basis for processing, applicable retention periods, and dependent table relationships. Without one, organizations cannot implement automated deletion, respond completely to erasure requests, configure meaningful audit logging, or assess backup exposure.
The post It’s 2026. Why are databases still failing GDPR compliance audits? appeared first on Simple Talk.