What is difference between starting Instance with -T3608 and with -f? I simulated a corruption of model database on test environment just for learning purposes. While reading others blogs and articles about it I stuck on the question, what is difference between starting SQL Server Service with undocumented -T3608 and -f flags?
When I tried to start service with -f, then got error message and service didn't start. However, in case of -T3608, it started smoothly. For -T3608 flag, I read that, -T3608 starts all databases without performing recovery and -f starts instance with minimal configurations. What is minimal configuration, I can't find info about it.
Say that you allocated something way way too big for the memory in the machine. Locks, for instance. SQL Server tries to create that much memory, but it isn't available, so SQL Server doesn't start. This is the scenario there -f comes in. Nowadays, there are some safety built into sp_configure to avoid ridiculous values (like way too low max server memory), so it might not be easy to actually get to that point in the first place. Another thing that -f does is to create tempdb where master.mdf is, instead of where you said it should be created (imagine a crashed tempdb disk - and SQL server can't live without tempdb).
Above is very different from not performing startup recovery of the databases at startup, which is what 3608 means.