To escape text for JSON, pass each value through STRING_ESCAPE, so JSON built by hand stays valid. A demo shows which characters it escapes and which it leaves alone. It also shows when JSON_MODIFY and FOR JSON make it unnecessary.
Forwarded Records and Performance – SQL in Sixty Seconds #155
Forwarded records make SQL Server read extra pages when it scans a heap. In this SQL in Sixty Seconds video, I explain forwarded records and performance.
Which Tables Are Huge: Rows Versus Size in SQL Server
Rows versus size decides which tables are huge in SQL Server. One query reads sys.dm_db_partition_stats and ranks every table twice, by rows and by size. A demo shows 300 rows that outweigh 300,000 rows, and why the older join misleads.
Internal Temporary Tables in MySQL: When a Query Spills to Disk
MySQL and MariaDB build internal temporary tables behind your back for GROUP BY, DISTINCT, UNION and derived tables. This post counts them with status counters, reads them in EXPLAIN, shows what pushes one to disk, and removes one with an index.
SQL SERVER – Check Backup Reliability
Backup Reliability needs a successful restore followed by integrity and application validation. Customers ask whether they can skip that exercise.
SQL SERVER – Finding Fragmentation in Forwarded Records
Finding Fragmentation in a heap also requires a separate check for forwarded records. I measure their effect before choosing maintenance.
SQL SERVER – Who Dropped Table? Part 2
A dropped table can leave transaction-log clues, but those clues are not a complete audit trail. My original investigation had limits.







