Releases: BrentOzarULTD/SQL-Server-First-Responder-Kit
Screw this, I'm learning C++
A lot of people would think we're crazy for releasing a FRK update a few days before a new version of SQL Server drops, but we've been adding 2017 compatible features for months
Also none of you are on 2017
Most of you won't live to be on 2017
If you're lucky, your kids3000 will migrate the last 2008R2 servers to SQL Server 2016
In the year 10,016, when, Double Extra Extended WE MEAN IT THIS TIME Support finally ends
My uploaded AI will be laughing at you
sp_Blitz Improvements
-- #1100 Ironic that someone would encrypt backups with a certificate but then not backup their encryption certificate, isn't it? A bit like copying all your DVDs to VHS and then lending your VCR to a carny.
-- #1110 There was a code switcheroo that took out the filtering for regular DBCC CHECKDB
calls. @MarkIons told us about it. Brent fixed it. I did absolutely nothing. I chose cozy.
-- #1116 I got up off my cozy butt and fixed some typos in system XE session names to filter out. Boy were those stupid typos.
sp_BlitzCache Improvements
-- #976 Is Paul White Electric? It's a question we've all asked ourselves about the SQL Mastermind/Intergalactic Celestial Being masquerading as a humble blogging man. If you've always wanted a reason to email him but couldn't think of one, perhaps finding a Switch operator will be your excuse.
-- #1129 No matter how much gets written about Implicit Conversion, we still keep finding it. This code extends the analysis of implicit conversions to tell you which variables caused implicit conversion on which column when they effect a Seek Plan. In testing, it works for stored proc parameters and declared variables (procs and adhoc).
While we're in there, we pull out the compile-time values and give you the exec command used to call the proc, in case you need to test a parameter sniffing scenario.
sp_BlitzFirst Improvements
-- #983 Wait stats are categorized the way MS lines them up in sys.query_store_wait_stats. It's like a wait stats decoder ring that you don't need to buy 48 boxes of Count Chocula to get.
-- #1092 There are 172 kinds of memory pressure in the known universe. We now warn on one more of them: external memory pressure. We try to figure that out by looking at if memory usage is way below max memory.
sp_BlitzIndex Improvements
Nothing this time.
sp_BlitzWho Improvements
-- #1089 On pre-2012 versions of SQL Server, it was possible for multiple rows to be returned due to an errant LEFT JOIN
clause that was later replaced by an OUTER APPLY
. Thanks to @nirst for letting us know about this one!
-- #1090 In tempdb usage, we weren't subtracting deallocated pages from allocated pages. This is dumb. And Fixed.
-- #1112 Welcome to the future. Or at least current. SQL Server 2016 introduced the sys.dm_exec_query_statistics_xml DMV. That's s fancy way of saying we have another way of finding query plans for currently executing queries.
sp_DatabaseRestore Improvements
Nothing this time.
sp_BlitzBackups Improvements
Nothing this time.
sp_BlitzQueryStore Improvements
-- #976 and #1129 from above
-- #1118 Some stored procs were being flagged as having unparameterized queries when they weren't.
-- #1120 When examining a single stored proc, different runs had costs summed up across executions. Now they don't. Weird, right? Accuracy. What a concept.
-- #1122 Parameter sniffing symptom thresholds were relaxed from 10,000x difference between averages/min/max to 100x difference. This makes more sense. Long term, I'm going to work on making this percentage based. I just have to learn math first.
sp_AllNightLog and sp_AllNightLog_Setup Improvements
-- #1005 Databases were left in a questionable state. I thought it was Maryland. I was wrong. It was "not backed up".
-- #1016 It was hard to disable restoring jobs, because we built this thing Ford Tough. It's still Ford Tough, but it has an override to make it Kia Wimpy if you need to disable stuff.
-- #1037 Added support for encrypted backup parameters!
sp_foreachdb Improvements
Nothing this time.
Yukon Hurl
Did you know there are more issues closed in this FRK than there are planets in this solar system?
Special thanks to Pluto for making that statement possible, and all the other planets that didn't form.
Also thanks to @mches for making the FIRST EVER contribution to sp_foreachdb, and @rabryst for hooking us up with some Linux Love in sp_Blitz.
sp_Blitz Improvements
#1055, #1094 -- you know what's funny about Debug modes? You have to debug them. Thanks to our many eagle-eyed users for letting us know about these!
#1056 -- Did you know that the name Linux comes from the Greek word for "crossed lines"? It's true, and that's why their file system uses "/" instead of "". They got mixed up when Claudius Linuxus devised their file system after getting headbutted by a goat. It's also why @rabryst had to write this code.
#1084 -- Thanks to @GrzegorzOpara and @martin-guth for informing us about even more DBCC events that we can ignore in our checks. DBCC CHECKPANTS
now finishes without error!
#1085 -- We hate when things run slowly as much as you do, that's why we turn off database level checks if you have more than 50 databases on your instance. Before, this was only a printed message behind the scenes. Now there's a whole line in the regular results. We care.
sp_BlitzCache Improvements
#1073 -- We hold ourselves to the lofty goal of documenting all of our inputs. And outputs. Brent keeps a diary. It's cute. He just ends all his entries with "Mrs. DMX". If you've ever wondered about that, or what the purpose of @IgnoreSqlHandles
, now you know.
#1076 -- There was some confusion about what would be in a column if it wasn't a parallel query. Confusion has been abated. Now we can go back to making fun of serial queries together, bug-free.
#1079 -- In the ultimate act of self immolation, the row estimate mismatches would sometimes fire for queries that didn't match. Not, like, totally unrelated ones, but where there were multiple statements in a stored procedure, it would get all... French words.
sp_BlitzFirst Improvements
Nothing this time.
sp_BlitzIndex Improvements
#1068 -- possibly the most ancient bug was uncovered by the part-alien, part-android @wendydroid. I'm assured that's wendy droid, not wendy d. roid, though we're not sure if she's not on steroids after finding that one.
sp_BlitzWho Improvements
Nothing this time.
sp_DatabaseRestore Improvements
Nothing this time.
sp_BlitzBackups Improvements
Nothing this time.
sp_BlitzQueryStore Improvements
Just about the same stuff as sp_BlitzCache
sp_AllNightLog and sp_AllNightLog_Setup Improvements
Nothing this time.
sp_foreachdb Improvements
#1078 -- WOOHOO! All your database name pattern matching dreams have come true. I mean, all the ones you've told us about. Thanks to @mches for being the first person brave enough to crack open Aaron Bertrand's code and have a go at it.
Yukon Ho!
We're going to Alaska this month, so try not to find any bugs, okay?
To celebrate, I'm channeling childhood nostalgia, and quoting a verse from one of my many Taco-Bell-dripping-stained Calvin and Hobbes tomes.
We'll never have to clean a plate,
Of veggie goops and goos
Messily we'll masticate,
Using any fork we choose!
When I was a kid, the word "masticate" was always good for a chuckle.
Until I found a dictionary.
sp_Blitz Improvements
- #962: @RichBenner - the man, the myth, the guy who cares about trace file names. Thanks to him, you'll never have to worry about one being folded, spindled, or mutilated.
- #1008: We added a debug mode. Actually, we added two debug modes. Using
@Debug = 1
will print out CheckIds as they run, and@Debug = 2
will print out CheckIds and dynamic SQL used in some checks. This will help us identify errors and slow-moving queries. You're welcome. - #1023: We noticed that there were some undeclared character lengths, and fixed them. Who cares, right?
- #1029: We'll only give you warnings about CMEMTHREAD when you have multiple NUMA nodes. Spiffy!
- #1041: When we look at DBCC CHECKDB commands that have been run in the default trace, we ignore anything run by common monitoring tools.
- #1042: The only thing worse than knowing fill factor is low is now knowing how low it is. Now you'll know, and you can begin the long march to the bottom of your Desk Whiskey® bottle.
- #1043: Endpoints; ah, Endpoints. Those verdant fields. It's fine if
sa
owns them. Now you'll know that too. - #1049: The memory dumps check was missing a
BEGIN
andEND
. Using advanced control-flow technology, we can now avoid running syntax when our Super Cool Consultant Criteria® isn't met.
sp_BlitzCache Improvements
- #1030: We'll give you a holler if there's a high variation between the estimated rows estimated to come out of a query's
SELECT
operator, and how many rows are returned on average by a query. This is v1, so if you run into anything weird, please let us know!
sp_BlitzFirst Improvements
- Nothing this time around
sp_BlitzIndex Improvements
- Nothing this time around
sp_BlitzWho Improvements
- #1017: Not all blocking would be flagged. Sometimes none of it would be. The whole thing stunk! Stunk! Like the way those zit popping videos probably smell.
- #1031: DMVs are awful. Has anyone else noticed that? One day you're cruising along with a positive elapsed time, the next day SQL Server decides you're a negative number. Yeah. Cool. Thanks, SQL Server.
sp_DatabaseRestore Improvements
- Nothing this time around
sp_BlitzBackups
- #977: In the humble words of @TheUsernameSelectionSucks "this is broken". Now it's fixed, with the healing powers of
QUOTENAME
. It turns out that thing you only ever used in dynamic SQL is good for other things, too. - #1039: Moving files broke really easily, and didn't take into account if you were restoring a database with a different name. Now it breaks far less easily, and takes name changes into consideration.
sp_BlitzQueryStore
- #908: Added filtering for
plan_id
andquery_id
. Why? Because I needed it for 24HOP. - #1030: Same row variation item that got added to
sp_BlitzCache
- #1034: Future-proofing for SQL Server 2017. Some new columns got added with query metrics in them.
sp_AllNightLog and sp_AllNightLog_Setup
There were like 10 changes here, and I'm far too hungry to write something funny for all of them. If you're interested, here's the full list of issues in this release.
Installer Scripts
Two turned into three! Yes, three! There are now two installers for the core Blitz scripts. One has sp_BlitzQueryStore
in it, and the other doesn't. The installer for all scripts includes everything. I'm not making a special one that doesn't have sp_BlitzQueryStore
in it for that one.
Deprecated
sp_BlitzRS
and sp_BlitzTrace
are no longer under active development. Whatever version of them you have is the final version. It would take a really, really impressive code change to get us to take them out of retirement. If you want them, you can still find them here.
Johnny's always running around trying to find certainty
ONE TWO THREE FOUR FIVE SIX SEVEN WHO DO WE APPRECIATE?
No one.
Appreciate doesn't rhyme with seven.
Special thanks to @JohnKNess, @jsetliffe, @rabryst, @gdoddsy and @SOlsonFAC for various levels of contribution. I've made a $10,000 donation in each of your names to the Erik Darling Home For Little Wanderers. Very thoughtful of me.
sp_Blitz Improvements
- #878 The Irascible Mr. @JohnKNess fixed some things so maintenance plans and jobs that shrink things and are enabled have a higher priority than jobs that are disabled, taking into account last runtime. Pretty cool! Now we can all point and laugh at your shrinkage.
sp_BlitzCache Improvements
- #968 Adds detection and warning for Index Spools. Only the Eager kind. Why? Paul White said so. Fun fact: He was in a band called The Lazy Spools in high school. I had the XQuery written to add the check for Eagerness, but then my XML Dad Mikael Eriksson suggested an alternative. So I went with it just because. Special thanks to #SQLNEWBLOGGER Joe Obbish for suggesting reasonable thresholds, here.
sp_BlitzFirst Improvements
- #928 PLE may go up, and it may go down. We were only looking for one of those directions. Now we're looking in both of those directions. Thanks to @TaraKizer for pointing that out!
sp_BlitzIndex Improvements
- #937 If you restarted your server a year ago and created a table a month ago, missing index requests for it may be terribly underrepresented. Like me at AA meetings. Now we take table creation date into account when determining missing index benefit.
sp_BlitzWho Improvements
- #895 Adds session level wait stats for 2016+ using
sys.dm_exec_session_wait_stats
to grab the top 3 waits with >5ms time accumulated. - #942 Adds a
@Debug
option to print out dynamic SQL. Helpful if you're me. - #926 Adds tempdb allocations! So you can see how horrible that is now, too.
- #921 Adds Resource Governor information, for both of you crazy kids out there using Resource Governor. Thanks to @djlaney3 for the idea and code submission!
sp_DatabaseRestore Improvements
- This underwent a bit of reconstructive surgery to bring it inline with our 'coding standards' (read: I had to look busy one day, so I rearranged a bunch of stuff and made sure all our strings were Unicode). No behavior was harmed during this change.
sp_BlitzBackups
- #906 Fixes an issue with dynamic SQL around the encrypted backup check. Thanks to @jsetliffe
- #909 Clarified language around backup compression and supported versions. Thanks to @rabryst for showing us the error of our loose-tongued ways.
- #911 Corrects math to determine if Diffs are big or not. Thanks to @gdoddsy and @SOlsonFAC for teaching me math.
sp_BlitzQueryStore
- #934 Fixes some weirdness when attempting to search for a specific stored procedure by name
- #933 We are compatible with Azure! At least according to @dcurlewis. I don't have Azure, so I can't check. He seems trustworthy, though.
- #968 Same as sp_BlitzCache
sp_AllNightLog and sp_AllNightLog_Setup
- These are new! They're part of our FauxPaaS to do our own version of Log Shipping. Since these are net-new, check out the documentation and other posts about them to learn more. I could go on for a month, here.
Install_Core_Blitz and Install-All-Procs
- We're trying something new! Because we hate opening multiple .sql files as much as you do (because why in the blue ox would SSMS decide to spawn a new window FOR EVERY SINGLE SCRIPT YOU OPEN??), we made it easy. Now you can just open one big script. We use a couple simple
copy
commands to do this:copy /b /y sp_Blitz*.sql Install_Core_Blitz.sql
andcopy /b /y *.sql Install-All-Procs.sql
, which you can use and modify to create your own version, omitting whatever scripts you don't want. Lucky you!
This heat has got right out of hand
So many things happen in mid-Summer. Dreams. Death. Pit stains.
And FRK updates!
Special thanks to @digitalohm for once again taking the axe to sp_DatabaseRestore. You are the only person on our email list who isn't getting a Box O' Tripe®
sp_Blitz Improvements
- #872 @MosesOfJ pointed out that, while our code is flawless, our spelling was not. Thanks, Mo.
- #877 Dear sir Moses also pointed out that our code is not flawless, but our spelling was! Hey, we're... 50/50. Kinda. What's math got to do with code, anyway? Now SkipChecks work NVARCHAR(4000)% better.
sp_BlitzCache Improvements
- #889 Added pre-2017 future-proofing to pull information about statistics and adaptive joins out of XML
- #890 Things were formatted. No one got drooled on. Quite the day.
sp_BlitzFirst Improvements
- #879 After a weird situation (blame @TaraKizer ), we decided to stop ignoring CLR waits. Boy oh boy.
sp_BlitzIndex Improvements
- Nothing this go around. We try not to mess with perfection.
sp_BlitzWho Improvements
- Has attained a zen-like state and did not receive any chakra filth.
sp_DatabaseRestore Improvements
- #871 Here we stand athwart log restores yelling STOPAT! So, you know, if you want to stop at a certain time within a log restore, you can do that now. This was all @digitalohm, whose mailbox will not smell like the worst hangover ever.
sp_BlitzBackups
- Initial release! There were many PRs and fixes in the dev branch leading up to this that aren't really pertinent historically, because it has no history. Literally none. This is a newborn. Give it a spankin.
sp_BlitzQueryStore
- MAZEL TOV! It's another new stored procedure. Requires 2016, and an enabled query store. Details will be forthcoming in a blog post this week, but you can get it now and feel the hot rush of blood that accompanies hitting F5 and finding out how horrible things truly are.
It was all a dream, I used to read Wizard magazine
Every April I think about this girl I grew up with named April who smelled like Cheez-Wiz.
She died tragically in a home for the blind on Taco Tuesday.
Special thanks to @jeffrosenberg , @mrthomsmith , @rwhoward for contributing this month. Your complimentary oxygen is now available.
sp_Blitz Improvements
- #762 This big dummy would crash on certain versions of 2008R2 when checking for memory dumps, ironically causing a memory dump. So hey, there's that. Now we don't do that for those versions. You're welcome.
- #824 Some files are bigger than others, and some sizes do matter. For instance, we only care if your tempdb files are more than 1 GB apart in size. Now you know, and knowing is half the burden,
sp_BlitzCache Improvements
- #770 We now warn you if you use a Spatial index, since that probably means you accidentally created some Spatial data in SQL Server. I mean, who does that?
- #796 sp_BlitzCache will now warn you if your code creates or drops tables and indexes while running. Yeah, who knew?
- #801 We do our best to bubble up information from statements in stored procedures to their calling code. Because that's the right thing to do. Why should those lazy statements get all the attention? They're not special. Now we do that with memory grants, where available.
- #808 Code is weird. Code that calls other code is weirder. Code that gets blocked is double weird, like a trailer full of twin sized mattresses. We now warn you if low cost queries have high CPU, or if long running queries have low CPU. Surely those are signs of trouble.
- #816 Ah, zero. Is there anything you can't do? Oh, be divided by. Yeah. Let's not do that.
sp_BlitzFirst Improvements
- #819 Biggie Smalls for mayor, the rap slayer, Hekaton say your prayers. Also get notified if any activity is happening by BlitzFirst.
- #823 Funny story: no one ever found this error, because no one ever ran sp_BlitzFirst when they had a query being blocked for more than 30 seconds, which are EXACTLY THE KIND OF PEOPLE WHO SHOULD BE RUNNING sp_BlitzFirst, especially since this bug is fixed.
sp_BlitzIndex Improvements
- #772 Mode 2 is now capable of being output to a remote server. Not available for other modes, or Depeche Mode.
- #777 Cleanliness is next to Godliness, so I cleaned up this code to find your blasphemous computed columns based on scalar functions so you may be doomed for all eternity.
- #778 Unused indexes are, like, a bummer, man. But they're a bigger bummer when they have a lot of writes. Thanks to @amtwo for the totally badical suggestion. Air guitar and whatnot.
- #779 I keep hearing about this SQL Server 2016 thing. I hope someday someone uses it, so they can use temporal tables, and marvel at the information that so_BlitzIndex provides them.
sp_BlitzWho Improvements
- #822 Sleeping transactions can violate the NAP by blocking other queries with their snoring so we can call our gold level sp_BlitzWho to arrest them. or just find them. Why weren't we going this before? That was silly.
sp_DatabaseRestore Improvements
- #765 We have the most elegant, luxurious storage for our LSNs. Really. Ask anyone. They're NUMERIC(25,0).
- #766 Similarly, we have the most elegant and luxurious storage for our file paths: NVARCHAR(MAX).
- #775 Being compatible is important. Being backwards compatible means you have more bugs to fix. But hey, now you can find bugs if you're on 2008 or later.
These were all done by @jeffrosenberg! A threefer! - #787 It's not a stored procedure unless it starts with sp_ -- thanks @mrthomsmith !
Leap Month
I got 128 GB of RAM just to develop sp_BlitzCache with! Also, thanks to @RichBenner @BrentOzar and @douglane for code, and @LitKnd and @HenrikStaunPoulsen for great ideas!
sp_Blitz Improvements
- #677 Finally! A bug that isn't ours! Microsoft forget to let SE clean up query store. We warn you about that now.
- #650 2016 SP1 gave us exciting new (old) Enterprise features. We give you some boring new wording about them. (suggested by @HenrikStaunPoulsen )
- #602 More checks to see if you did something ridiculous to your CPUs
sp_BlitzCache Improvements
- #688 Curious about RLS in your query plan? So is @LitKnd! Thanks, Kendra!
- #678 In 2016 and up, we'll tell you something if estimated rows and estimated rows read are way different. Seriously, upgrade to 2016. What's wrong with you?
- #665 So uh, you can now sort by 'all' and 'all avg'. This may perform terribly on some servers. Please report any bugs.
- #663 Sometimes stored procedure costs would show up as double. That's no good.
- #661 Function join detection was weird in some circumstances.
- #660 Sometimes we don't find any warnings. Now we tell you when we don't find any warnings. Relief.
- #659 Operator checks sometimes take a long time. Breaking them into smaller parts helps.
- #653 Ever see something in BlitzCache that wasn't yours? Funny thing about SPIDs, huh? We filter on those now, too.
- #652 Filters! Referencing scalar valued functions! What a bad idea. We'll let you know about that.
- #633 Are you modifying a lot of indexes? I don't know. But BlitzCache does. This looks a little inflated because it takes into account IF branches, but you get the idea.
- #459 If a stored procedure gets executed once, does anyone care? @douglane doesn't! Thanks, Doug!
sp_BlitzFirst Improvements
- #668 Context is everything. Especially for databases. When you're checking for stored procs.
- #658 Long running queries being blocked. Great post, Brent! (coded by @BrentOzar )
- #647 Is SQL running? Yes? So is something other than SQL, and it's taking >= 25% of your processor time. (coded by @RichBenner )
- #646 Because you should know if some goofball is restoring a database (coded by @RichBenner )
- #645 Night of the sleeping SPIDs (coded by @RichBenner )
sp_BlitzIndex Improvements
- #680 Statistics can have more than one column in them. Go figure.
- #671 Not all ReportServer databases are just called ReportServer (coded by @BrentOzar )
sp_BlitzWho Improvements
- #649 Oh, that pesky database_id error.
- #645 Night of the sleeping SPIDs (coded by @RichBenner )
2016 Dec 10 - The December to Remember Script Event
Happy holidays! Shout out to our contributors this month: @BlitzErik, @RichBenner, @runamuk0, @SQLMonger, and @BrentOzar.
sp_Blitz Improvements
- #591 - add check for 2016 Standard installed without Service Pack 1 (coded by @RichBenner)
- #615 - add check for trace flag 834 used in combination with columnstore indexes (coded by @RichBenner)
- #603 - add check for min server memory = max server memory (suggested by @BlitzErik, coded by @RichBenner)
- #598 - added checks for non-default database configuration scoped settings in SQL 2016 (suggested by @HenrikStaunPoulsen, coded by @BrentOzar)
- #593 - added check for Instant File Initialization using new sys.dm_server_services field in SQL 2016 SP1 (suggested by @BlitzErik, coded by @BrentOzar)
- #592 - added check for Lock Pages in Memory using new sys.dm_os_sys_info field in SQL 2016 SP1 (suggested by @BlitzErik, coded by @BrentOzar)
- #582 - added check for TempDB file creation error (suggested by @BlitzErik, coded by @BrentOzar)
- #616 - improved Target Recovery Time warning because some SQL tools set it to 0 and some set it to 60 (suggested by @aclenscorp, coded by @BrentOzar)
- #619 - fixed case sensitivity bug introduced in another patch (coded by @mikejwhitty, only visible to folks like us who work in the dev branch)
sp_BlitzCache Improvements
- #617 - add alert for computed columns with scalar operators (coded by @BlitzErik)
- #626 - add alerts for more kinds of expensive remote queries (coded by @BlitzErik)
- #228 - skip offline databases (coded by @BlitzErik)
sp_BlitzFirst Improvements
- #599 - made it more PowerShell-friendly by making all column names unique in the FileStats column output (coded by @runamuk0)
sp_BlitzIndex Improvements
- #615 - added warning if trace flag 834 is used in combination with columnstore indexes (coded by @RichBenner)
- #622 - stop counting hypothetical indexes in the total number of indexes on a table (coded by @BlitzErik)
- #607 - now works in partially contained databases (reported and fixed by @SQLMonger)
sp_BlitzWho Improvements
- #544 - added database name in the output to show the query's context (coded by @BlitzErik)
2016 Nov 15 - Giving Thanks to @RichBenner and @BlitzErik
These improvements go great with cranberries. The food, not the b - actually, they go pretty well with the band, too.
sp_Blitz Improvements
- #568 - @RichBenner added a check for the default parallelism settings
sp_BlitzCache Improvements by @BlitzErik
- #495 - add warning for indexed views with missing stats
- #557 - bug fix - don't alert on unused memory grants if query is below the server's minimum memory grant
- #583 - add warning for backwards scans, forced index usage, and forced seeks or scans
sp_BlitzIndex Improvements, Mostly by @BlitzErik
- #566 - new @SkipStatistics flag enabled by default. This means you only get the stats checks if you ask for it. (We were having some performance problems with it in last month's version.)
- #567 - bug fix - now adds persisted to a field definition if necessary
- #571 - bug fix - better checks for computed columns using functions in other schemas
- #574 - bug fix - long filter definitions over 128 characters broke quotename
- #578 - bug fix - @RichBenner made sure SQL 2005 users understand that they're unsupported
2016 Oct 23 - sp_BlitzCache, sp_BlitzIndex new checks
Just when you thought we were done for October, we're turning into ROCKTOBER.
sp_BlitzCache Improvements, All @BlitzErik's Handiwork
- #543 - look up execution plans for a stored procedure by name, the new @StoredProcedureName parameter
- #540 - add warnings for recently compiled plans (last 4 hours)
- #497 - add warning for CLR functions
- #482 - add check for compute scalar operators that call functions
- #422 - add check for table variable use
- #556 - add and improve cursor checks
- #532 - fix double warnings on expensive remote queries
- #559 - fix varbinary conversion error
sp_BlitzIndex Improvements, All By The Incredible Non-Edible @BlitzErik
- #529 - add divide-by-zero handling to stats queries
- #530 - add more clear wording to stats warnings
- #479 - add a check for filtered stats
- #531 - don't get filtered stats on SQL 2005
- #528 - add schema information to collection and results
- #527 - faster stats collection with >50k objects
- #490 - sp_BlitzIndex should be marked to recompile