| Licensing trap | Per-core billing scales linearly with core count; Enterprise cost steepens sharply at high core counts; the "cheap at small scale, expensive at large scale" model flips as you grow | All versions | open |
| Licensing trap | Complex licensing rules: licensing by VM requires SA/subscription; free passive replicas have preconditions (active SA + genuinely passive); CAL multiplexing doesn't save money; SAM audits hang overhead | All versions (licensing-by-VM rules tightened since 2022) | open |
| Licensing trap | Heavy feature gating between Standard and Enterprise: full AG, advanced readable-replica capabilities, some security/performance features are Enterprise-only; buying the wrong edition = refactoring | All versions | open |
| Performance trap | Parameter sniffing: the parameter value at a stored procedure's first compile decides the cached plan; with skewed data distribution, later calls fall off a performance cliff — "restarting the instance fixes it" is the classic symptom | All versions | partially-fixed (2022 parameter-sensitive plan optimization, 2025 optional parameter plan optimization, Query Store automatic correction mitigate) |
| Performance trap | Lock escalation: a single statement exceeding ~5,000 locks triggers row-lock → table-lock escalation; batch UPDATEs block unrelated queries on the whole table; NOLOCK dodges blocking but may skip/duplicate rows | All versions | partially-fixed (2025 Optimized Locking eases contention; doesn't change escalation-threshold logic) |
| Performance trap | TempDB allocation-page contention (PAGELATCH_EX): high-concurrency temp tables/sorts saturate the global serialization point; enabling RCSI adds another wave of version-store consumption on TempDB | All versions | partially-fixed (2022+ tempdb metadata optimization and GAM/SGAM enhancements; the file-count convention remains mandatory) |
| Performance trap | Auto-update statistics threshold too high for large tables (≈ SQRT(1000 × rows)); a 1-billion-row table can drift by millions of rows and still "count as fresh"; execution plans degrade progressively | All versions | open |
| Operations trap | One-way upgrade door: in-place doesn't support downgrade; rollback = restoring backups to a parallel instance; backups can't restore downward | All versions | open (workaround: side-by-side) |
| Operations trap | Raising compatibility level causes plan regressions: the new CE changes cardinality estimation; old SQL gets slower at the new level; must follow the three-phase "baseline → raise level → Query Store remediation" | 2014+ (since the new CE was introduced) | open (process mitigation) |
| Operations trap | AG operational burden: WSFC/quorum/Pacemaker (Linux), redo-queue monitoring, synchronous-latency tuning; "high availability" ≈ "hiring half a DBA" | 2012+ | open |
| Operations trap | MERGE statement concurrency bug is a community-consensus trap: under high concurrency it can error or produce wrong results; veterans uniformly rewrite as UPDATE + IF ROWCOUNT=0 INSERT | All versions | open |
| Compatibility trap | Linux edition feature gaps: SSAS/SSRS/R services missing, SSIS unavailable on the 2025 Linux edition, containers don't support Arc-related capabilities, Intel 12th-gen+ hybrid CPUs once failed to start on Linux | 2017+ | partially-fixed (2025 backfills vector/JSON/Entra etc., but gaps remain) |
| Compatibility trap | Azure SQL Database "95% compatible": SQL Agent, cross-database queries, CLR, manual backups missing — the last 5% is the most expensive in migration | All versions | open |
| Ecosystem trap | T-SQL/SSIS/SSRS lock-in: migrating off the full stack is extremely expensive; bargaining power decays with depth of use | All versions | open |
| Cost trap | Legacy-version holdouts: 2008/2012 still running in production; ESU (Extended Security Updates) billed annually; delaying upgrades = paying tax continuously | 2008–2014 | open |