Testing AI with an Office Hours Question Brent Ozar, a Microsoft SQL Server expert and podcast host, tested whether a fully local AI setup could answer an Office Hours question, using the MiniMax H3 image-to-video model and a local Qwen3.6-35B-A3B model on his MacBook Pro. The local model produced a partially incorrect answer about DBCC CHECKDB on a 25TB database, correctly noting safety but wrongly suggesting PHYSICAL_ONLY causes tempdb issues and recommending irrelevant settings. Ozar concluded that while local models are good for coding tasks, they lack the real-world knowledge needed for nuanced database advice. Testing AI with an Office Hours Question When the new MiniMax H3 image-to-video model dropped this month, I was really impressed with how quickly and easily it was able to make 5-10 second videos from a starting image – not in the cloud, mind you, but on my own home computer gear: The voice audio is nowhere near my own voice yet, thank God but obviously this technology’s moving really quickly. That led me to think – could I do a completely automated Office Hours, all with my own computer gear not the cloud just to see what the quality looked like? To find out, I took the top-voted Office Hours question at that moment, and I prefixed it with the kind of answer that I was looking for – otherwise, LLMs will just hurl a wall of text at you. Answer as Brent Ozar, noted Microsoft SQL Server expert and host of Office Hours podcast where audience members can ask database questions. Keep your answers to around 60-90 seconds of spoken text at most. Audience question: “Hi Brent, is running DBCC CHECKDB on a sync secondary in AG safe for a 25TB DB, or will it delay trans commits? We run on async now, but keep hitting tempdb full errors on full CHECKDB vs PHYSICAL ONLY. Any recommendations for running integrity checks at this scale? Thank you ” I love that question because it’s full of interesting nuances. Attempt 1: asking a local coding model If you were lucky enough to get an AI-grade computer before prices skyrocketed – like something with an NVidia 3090/4090/5090, or a Mac with 96GB+ memory – then a good line of defense against AI costs is to run a small local model for basic coding tasks. On my MacBook Pro, I usually leave oMLX https://github.com/jundot/omlx up and running with the Qwen3.6-35B-A3B model, and it uses about 39GB of RAM. It’s great for relatively simple gruntwork like “Rewrite this stored procedure from row-based to set-based” or “Find out why this query sometimes produces null errors.” It’s not really for general knowledge questions like the Office Hours one above. However, I wanna show the results because it’s a good example of how a model can be good at one thing coding but suck at another thing real world knowledge . Plus, it’s entirely local, and it fit with my design goal of doing this whole thing locally without sending data up to the cloud. Ironic, given that we’re talking about publishing a public podcast, hahaha, but you get the idea. The answer came back in ~36 seconds – not ideal, but I could automate it if the quality was good. It was just one wall of text, but I’m going to break it up because I wanna respond to a lot of pieces in it: Great question. Short answer: yes, it’s safe, and it won’t delay primary commits—but it will absolutely hammer the secondary’s CPU, memory, and I/O, which can cause AG replication lag in a sync setup. That part is true. Those tempdb blowouts? Totally expected. CHECKDB uses tempdb for sorts, hash joins, and version stores, and at 25TB, even PHYSICAL ONLY will stretch it thin. It was great right up until the PHYSICAL ONLY part. PHYSICAL ONLY just checks the checksums on pages, and that shouldn’t cause massive TempDB problems on a secondary. Here’s what I’d do: run PHYSICAL ONLY weekly, and a full CHECKDB monthly during a maintenance window. Size tempdb aggressively—multiple data files, one per vCPU up to eight, equal growth, proper permissions. Make sure READ COMMITTED SNAPSHOT and ALLOW SNAPSHOT ISOLATION are enabled to cut down on latching and version cleanup. Eek. We’re going off the rails here. In fact, it’s so bad that the term “going off the rails” doesn’t do it justice, because that sounds like a train which generally travels in a single direction. This is more like rapid unscheduled disassembly, heading off in a zillion wrong directions at once: specifying a schedule without asking about RPO/RTO, distracting the user with talk of permissions, and wildly unrelated RCSI and SI stuff that aren’t going to matter to CHECKDB on a secondary. If you’re using Ola Hallengren’s maintenance scripts, skip DATA PURITY weekly and only enable it on your monthly run. At 25TB, consider splitting your database across filegroups so you can take one offline for a full integrity check without impacting production, or just accept that at this scale, you need dedicated backup/DR nodes for heavy maintenance. Wait why would you take a filegroup offline to do CHECKDB? And how could you even take something offline on a sync secondary? This is so bad, it’s not even wrong https://en.wikipedia.org/wiki/Not even wrong . Bottom line: async AG is your friend. Keep full CHECKDB s off business hours, size tempdb like you mean it, and check less often but deeper. Want our tempdb sizing checklist? Hit the feedback page. Get out. Grade: F for Fake Feedback Page. Okay, in fairness, it’s, uh … free and local. Attempt 2: DwarfStar with DeepSeek V4 Flash I’ve been recently falling in love with DwarfStar aka ds4 https://github.com/antirez/ds4 , an open source engine to run a very quantized lobotomized version of DeepSeek 4 Flash locally on Macs. It’s written by the same guy who wrote Redis, Salvatore Sanfilippo https://en.wikipedia.org/wiki/Salvatore Sanfilippo , aka antirez. I only started using this one last week, and I’m already crazy about it. It’s not for everyone – it’s really only for Mac users with at least 96GB RAM – but if you fall into that audience, it’s great because it’s so fast and many kinds of answers are good enough. Sure enough, the answer came back in seconds: Great question—this is a classic scale dilemma. Running DBCC CHECKDB with the full option on a synchronous secondary in an Availability Group is not safe for a 25TB database. Here’s why: in sync mode, the primary waits for the secondary to apply the log before acknowledging a commit. If your secondary is busy running a full CHECKDB—which chews through tempdb and hammers I/O—it can fall behind, causing the primary to slow down or even block commits. So yes, it can delay transaction commits. PERFECT. You’re already on async secondary, which is the right place for integrity checks. The problem you’re hitting is tempdb full errors on the full CHECKDB. That’s because the full option does deep logical checks that spill to tempdb—like rebuilding indexes internally. PHYSICAL ONLY avoids that because it only checks page and allocation integrity, using far less tempdb. That is also perfectly correct, nicely done. My recommendation: On your async secondary, run PHYSICAL ONLY regularly weekly . That’s your safety net. For the full logical checks, do them on a restored copy of a backup on a separate server with plenty of tempdb multiple files, fast storage . Or use a backup with checks and then DBCC CHECKDB on a restored copy. You can also schedule a full check quarterly during a low-write window on the async secondary—but only if you give tempdb more space and faster drives. The first two sentences had me really nervous, but then I actually clapped my hands in my office at the sentence starting with, “For the full logical checks, do them on a restored copy” – bingo That’s great, it points out the need to test restores. The rest of the reply goes back off the rails, though, because it avoids the discussion of RPO/RTO. If you can’t keep up with CHECKDB, you have a hardware & budget problem, and you don’t solve that by being willing to lose more data. In short: PHYSICAL ONLY on async secondary for routine checks, full checks on a restored copy. That keeps your production commits safe and avoids tempdb explosions. I do love that it summed things up at the end I try to do that too. Grade: C. This is fantastic for a local model giving me free answers in seconds, but it’s still not production-quality knowledge that can replace a DBA. This does kinda bum me out because the answer sounds so good, so authoritative, and I’m sure that right now, people out there are taking advice just like this and gradually making their environments worse. If you didn’t know better, the advice sounds good enough to rely on, and you won’t know how wrong it is until you’ve already lost data.