-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
sp_BlitzIndex: Stats info running from wrong database #1947
Comments
Seems there is no way to set the database for: CROSS APPLY sys.dm_db_stats_properties(s.object_id, s.stats_id) AS props So they would need to be executed in the correct database context. The system tables could be easily fixed by specifying database name. I couldn't get that to work correctly with the functions. I am not sure what infrastructure sp_blitzindex would have to execute a SQL string in a specific database context - I couldn't find any by doing a very quick code scan. |
Can only get stats if you're in the database you're analyzing. Closes #1947.
Great catch, and thanks for the work reproducing it! Yeah, looks like a bug in sys.dm_db_stats_histogram and sys.dm_db_stats_properties. To work around it, I did two things:
|
* Updating readme.md for sp_DatabaseRestore Documenting @ExistingDBAction for https://dba.stackexchange.com/questions/226145/sp-databaserestore-msg-50000. * 1900 sp_BlitzIndex add histograms When @TableName is specified and sys.dm_db_stats_histogram is available. Closes #1900. * #1903 sp_Blitz SQLServerCheckup Adding filter for that app name. Closes #1903. * #1905 sp_BlitzIndex remove BOU link Nothing against BOU, just don't need it in that particular place. Closes #1905. * #1908 Update copyright dates Ah, the glamour. Closes #1908. * Issue #1904 Change RAISERROR 'severity' for that should trigger throw and error. * Issue #1910 Add SQL Server version check before choosing 'memory grant' as the @BlitzCacheSortOrder. * Issue #1910 Add temp table creation. * #1914 sp_BlitzIndex partition error severity Dropping severity level from 16 to 0 since we're logging it in the result set anyway. Closes #1914. * Issue 1894 Moved RESTORE HEADERONLY up * LF line endings * added some extra checks + corrected some nesting * rebase and line endings * Web site commit Does this fix line endings? * #1916 sp_Blitz ignore backup on TempDB drive Closes #1916. * Auto line endings Dealing with sp_DatabaseRestore's line endings. * 1919 sp_Blitz ignoring a few checks for Managed Instances (#1920) * 1919 sp_Blitz ignoring a few checks for Managed Instances Working on #1919. * #1919 sp_Blitz excluding restored databases When checking backup history. Working on #1919. * #1919 sp_Blitz ignore some checks on Mgd Instances Changing RCSI wording on Azure SQL DB. Working on #1919. * #1921 Sp_BlitzIndex Add Drop and Create Columns to Output (#1923) Joined output query to #IndexCreateTsql to retrieve the CreateTsql already generated earlier in the script. Created Drop TSQL based off evaluating what type of index was present. * #1921 sp_BlitzIndex adding drops (#1924) Moving drop and create TSQL to the end of mode 2's results. Closes #1921. * #1925 sp_Blitz AWS RDS detection (#1926) Don't just rely on EC2 VM name to detect RDS. Also adds a new result noting that checks were skipped. Closes #1925. * #1927 sp_BlitzIndex skip rdsadmin db (#1928) GetAllDatabases = 1 fails when it hits rdsadmin because they're referring to the resource db. Closes #1927. * 2019_01 Release (#1931) Prep work for the release - changing version numbers, building build scripts. * #1933 sp_BlitzIndez Azure SQL DB (#1934) Check for DaysUptime is null. Closes #1933. * 1936 Deprecate Power BI Dashboard (#1937) Closes #1936. * sp_BlitzFirst - Decimals - Fixes #1940 (#1941) * batch requests & waits/core/sec are now decimals * also updated final data set for consistency * 1950 sp blitz lock azure sql db hyperscale (#1951) * #1950 sp_BlitzLock Azure SQL DB Hyperscale Fixes #1950. * #1950 sp_BlitzLock Azure SQL DB Hyperscale Oops, forgot my semicolon. Fixes #1950. * #1947 sp_BlitzIndex stats for current db (#1955) Can only get stats if you're in the database you're analyzing. Closes #1947. * #1952 sp_BlitzIndex Fix INSERT query column order (#1954) * remove table name from create index script (#1942) * Add Version Checking for all SP (#1949) * Update sp_BlitzCache.sql DECLARE @BlitzCacheVersion VARCHAR(30); DECLARE @BlitzCacheVersionDate DATETIME2; EXEC dbo.sp_BlitzCache @VersionCheckMode = 1, @Version = @BlitzCacheVersion OUTPUT, @VersionDate = @BlitzCacheVersionDate OUTPUT ; SELECT @BlitzCacheVersion as BlitzCacheVersion , @BlitzCacheVersionDate as BlitzCacheVersionDate * Update sp_BlitzFirst.sql * Update sp_BlitzIndex.sql * Update sp_BlitzLock.sql * Update sp_BlitzQueryStore.sql * Update sp_BlitzWho.sql * Update sp_DatabaseRestore.sql * Update sp_BlitzInMemoryOLTP.sql * Update sp_foreachdb.sql * Update sp_ineachdb.sql * Update sp_BlitzBackups.sql * Update sp_Blitz.sql * Update sp_AllNightLog_Setup.sql * Update sp_AllNightLog.sql * Update sp_BlitzInMemoryOLTP.sql * Update sp_BlitzLock.sql * sp_ineachdb version check Tweaking #1948 so it works. Closes #1948. * Update sp_BlitzCache.sql (#1953) Complete the join between #missing_index_detail and ##bou_BlitzCacheProcs as otherwise on servers running jobs with many steps, each missing indices will cause #missing_index_pretty to grow exponentially, causing sp_BlitzCache to run for hours. * Fixes #1943 - sp_Blitz check if SSIS/SSRS/SSAS are running (#1957) * Update sp_Blitz.sql * Update sp_Blitz.sql * Update sp_Blitz Checks by Priority.md * Update sp_Blitz Checks by Priority.md * Update sp_Blitz Checks by Priority.md * altered search strings because *of course* there's white space. shouldn't hurt too badly because there aren't many services running on sql boxes (hopefully) * #1943 adding URL (#1960) For new SSAS/IS/RS check. Closes #1943. * sp_BlitzCache additional plural checks for @sortorder (#1963) * additional plural checks added in plural checks, also raised error to 16 when invalid sort order is chosen. * removed unnecessary checks * minor typo (#1965) * #1967 sp_Blitz updating supported versions (#1969) SQL 2012 pre-SP4 is out of support. Closes #1967. * #1935 sp_BlitzCache Azure compatibility (#1972) Azure SQL DB compatibility and removing bou from global temp table names. Closes #1935. * #1973 sp_BlitzIndex truncation error (#1974) Fixes #1973. * #1971 add POOL_LOG_RATE_GOVERNOR as poison (#1975) Closes #1971. * #1966 fix sp_Blitz check IDs (#1976) 203 and 224 were swapped in the documentation. Closes #1966. * 20190219 bumping version numbers To prep for imminent release... * 20190219 release Updating install-all-scripts with new versions.
* Updating readme.md for sp_DatabaseRestore Documenting @ExistingDBAction for https://dba.stackexchange.com/questions/226145/sp-databaserestore-msg-50000. * 1900 sp_BlitzIndex add histograms When @TableName is specified and sys.dm_db_stats_histogram is available. Closes #1900. * #1903 sp_Blitz SQLServerCheckup Adding filter for that app name. Closes #1903. * #1905 sp_BlitzIndex remove BOU link Nothing against BOU, just don't need it in that particular place. Closes #1905. * #1908 Update copyright dates Ah, the glamour. Closes #1908. * Issue #1904 Change RAISERROR 'severity' for that should trigger throw and error. * Issue #1910 Add SQL Server version check before choosing 'memory grant' as the @BlitzCacheSortOrder. * Issue #1910 Add temp table creation. * #1914 sp_BlitzIndex partition error severity Dropping severity level from 16 to 0 since we're logging it in the result set anyway. Closes #1914. * Issue 1894 Moved RESTORE HEADERONLY up * LF line endings * added some extra checks + corrected some nesting * rebase and line endings * Web site commit Does this fix line endings? * #1916 sp_Blitz ignore backup on TempDB drive Closes #1916. * Auto line endings Dealing with sp_DatabaseRestore's line endings. * 1919 sp_Blitz ignoring a few checks for Managed Instances (#1920) * 1919 sp_Blitz ignoring a few checks for Managed Instances Working on #1919. * #1919 sp_Blitz excluding restored databases When checking backup history. Working on #1919. * #1919 sp_Blitz ignore some checks on Mgd Instances Changing RCSI wording on Azure SQL DB. Working on #1919. * #1921 Sp_BlitzIndex Add Drop and Create Columns to Output (#1923) Joined output query to #IndexCreateTsql to retrieve the CreateTsql already generated earlier in the script. Created Drop TSQL based off evaluating what type of index was present. * #1921 sp_BlitzIndex adding drops (#1924) Moving drop and create TSQL to the end of mode 2's results. Closes #1921. * #1925 sp_Blitz AWS RDS detection (#1926) Don't just rely on EC2 VM name to detect RDS. Also adds a new result noting that checks were skipped. Closes #1925. * #1927 sp_BlitzIndex skip rdsadmin db (#1928) GetAllDatabases = 1 fails when it hits rdsadmin because they're referring to the resource db. Closes #1927. * 2019_01 Release (#1931) Prep work for the release - changing version numbers, building build scripts. * #1933 sp_BlitzIndez Azure SQL DB (#1934) Check for DaysUptime is null. Closes #1933. * 1936 Deprecate Power BI Dashboard (#1937) Closes #1936. * sp_BlitzFirst - Decimals - Fixes #1940 (#1941) * batch requests & waits/core/sec are now decimals * also updated final data set for consistency * 1950 sp blitz lock azure sql db hyperscale (#1951) * #1950 sp_BlitzLock Azure SQL DB Hyperscale Fixes #1950. * #1950 sp_BlitzLock Azure SQL DB Hyperscale Oops, forgot my semicolon. Fixes #1950. * #1947 sp_BlitzIndex stats for current db (#1955) Can only get stats if you're in the database you're analyzing. Closes #1947. * #1952 sp_BlitzIndex Fix INSERT query column order (#1954) * remove table name from create index script (#1942) * Add Version Checking for all SP (#1949) * Update sp_BlitzCache.sql DECLARE @BlitzCacheVersion VARCHAR(30); DECLARE @BlitzCacheVersionDate DATETIME2; EXEC dbo.sp_BlitzCache @VersionCheckMode = 1, @Version = @BlitzCacheVersion OUTPUT, @VersionDate = @BlitzCacheVersionDate OUTPUT ; SELECT @BlitzCacheVersion as BlitzCacheVersion , @BlitzCacheVersionDate as BlitzCacheVersionDate * Update sp_BlitzFirst.sql * Update sp_BlitzIndex.sql * Update sp_BlitzLock.sql * Update sp_BlitzQueryStore.sql * Update sp_BlitzWho.sql * Update sp_DatabaseRestore.sql * Update sp_BlitzInMemoryOLTP.sql * Update sp_foreachdb.sql * Update sp_ineachdb.sql * Update sp_BlitzBackups.sql * Update sp_Blitz.sql * Update sp_AllNightLog_Setup.sql * Update sp_AllNightLog.sql * Update sp_BlitzInMemoryOLTP.sql * Update sp_BlitzLock.sql * sp_ineachdb version check Tweaking #1948 so it works. Closes #1948. * Update sp_BlitzCache.sql (#1953) Complete the join between #missing_index_detail and ##bou_BlitzCacheProcs as otherwise on servers running jobs with many steps, each missing indices will cause #missing_index_pretty to grow exponentially, causing sp_BlitzCache to run for hours. * Fixes #1943 - sp_Blitz check if SSIS/SSRS/SSAS are running (#1957) * Update sp_Blitz.sql * Update sp_Blitz.sql * Update sp_Blitz Checks by Priority.md * Update sp_Blitz Checks by Priority.md * Update sp_Blitz Checks by Priority.md * altered search strings because *of course* there's white space. shouldn't hurt too badly because there aren't many services running on sql boxes (hopefully) * #1943 adding URL (#1960) For new SSAS/IS/RS check. Closes #1943. * sp_BlitzCache additional plural checks for @sortorder (#1963) * additional plural checks added in plural checks, also raised error to 16 when invalid sort order is chosen. * removed unnecessary checks * minor typo (#1965) * #1967 sp_Blitz updating supported versions (#1969) SQL 2012 pre-SP4 is out of support. Closes #1967. * #1935 sp_BlitzCache Azure compatibility (#1972) Azure SQL DB compatibility and removing bou from global temp table names. Closes #1935. * #1973 sp_BlitzIndex truncation error (#1974) Fixes #1973. * #1971 add POOL_LOG_RATE_GOVERNOR as poison (#1975) Closes #1971. * #1966 fix sp_Blitz check IDs (#1976) 203 and 224 were swapped in the documentation. Closes #1966. * 20190219 bumping version numbers To prep for imminent release... * 20190219 release Updating install-all-scripts with new versions. * 2019_02 Release Bumping version numbers & dates. * Merge conflicts, good times * Merge conflicts, whee
* Updating readme.md for sp_DatabaseRestore Documenting @ExistingDBAction for https://dba.stackexchange.com/questions/226145/sp-databaserestore-msg-50000. * 1900 sp_BlitzIndex add histograms When @TableName is specified and sys.dm_db_stats_histogram is available. Closes #1900. * #1903 sp_Blitz SQLServerCheckup Adding filter for that app name. Closes #1903. * #1905 sp_BlitzIndex remove BOU link Nothing against BOU, just don't need it in that particular place. Closes #1905. * #1908 Update copyright dates Ah, the glamour. Closes #1908. * Issue #1904 Change RAISERROR 'severity' for that should trigger throw and error. * Issue #1910 Add SQL Server version check before choosing 'memory grant' as the @BlitzCacheSortOrder. * Issue #1910 Add temp table creation. * #1914 sp_BlitzIndex partition error severity Dropping severity level from 16 to 0 since we're logging it in the result set anyway. Closes #1914. * Issue 1894 Moved RESTORE HEADERONLY up * LF line endings * added some extra checks + corrected some nesting * rebase and line endings * Web site commit Does this fix line endings? * #1916 sp_Blitz ignore backup on TempDB drive Closes #1916. * Auto line endings Dealing with sp_DatabaseRestore's line endings. * 1919 sp_Blitz ignoring a few checks for Managed Instances (#1920) * 1919 sp_Blitz ignoring a few checks for Managed Instances Working on #1919. * #1919 sp_Blitz excluding restored databases When checking backup history. Working on #1919. * #1919 sp_Blitz ignore some checks on Mgd Instances Changing RCSI wording on Azure SQL DB. Working on #1919. * #1921 Sp_BlitzIndex Add Drop and Create Columns to Output (#1923) Joined output query to #IndexCreateTsql to retrieve the CreateTsql already generated earlier in the script. Created Drop TSQL based off evaluating what type of index was present. * #1921 sp_BlitzIndex adding drops (#1924) Moving drop and create TSQL to the end of mode 2's results. Closes #1921. * #1925 sp_Blitz AWS RDS detection (#1926) Don't just rely on EC2 VM name to detect RDS. Also adds a new result noting that checks were skipped. Closes #1925. * #1927 sp_BlitzIndex skip rdsadmin db (#1928) GetAllDatabases = 1 fails when it hits rdsadmin because they're referring to the resource db. Closes #1927. * 2019_01 Release (#1931) Prep work for the release - changing version numbers, building build scripts. * #1933 sp_BlitzIndez Azure SQL DB (#1934) Check for DaysUptime is null. Closes #1933. * 1936 Deprecate Power BI Dashboard (#1937) Closes #1936. * sp_BlitzFirst - Decimals - Fixes #1940 (#1941) * batch requests & waits/core/sec are now decimals * also updated final data set for consistency * 1950 sp blitz lock azure sql db hyperscale (#1951) * #1950 sp_BlitzLock Azure SQL DB Hyperscale Fixes #1950. * #1950 sp_BlitzLock Azure SQL DB Hyperscale Oops, forgot my semicolon. Fixes #1950. * #1947 sp_BlitzIndex stats for current db (#1955) Can only get stats if you're in the database you're analyzing. Closes #1947. * #1952 sp_BlitzIndex Fix INSERT query column order (#1954) * remove table name from create index script (#1942) * Add Version Checking for all SP (#1949) * Update sp_BlitzCache.sql DECLARE @BlitzCacheVersion VARCHAR(30); DECLARE @BlitzCacheVersionDate DATETIME2; EXEC dbo.sp_BlitzCache @VersionCheckMode = 1, @Version = @BlitzCacheVersion OUTPUT, @VersionDate = @BlitzCacheVersionDate OUTPUT ; SELECT @BlitzCacheVersion as BlitzCacheVersion , @BlitzCacheVersionDate as BlitzCacheVersionDate * Update sp_BlitzFirst.sql * Update sp_BlitzIndex.sql * Update sp_BlitzLock.sql * Update sp_BlitzQueryStore.sql * Update sp_BlitzWho.sql * Update sp_DatabaseRestore.sql * Update sp_BlitzInMemoryOLTP.sql * Update sp_foreachdb.sql * Update sp_ineachdb.sql * Update sp_BlitzBackups.sql * Update sp_Blitz.sql * Update sp_AllNightLog_Setup.sql * Update sp_AllNightLog.sql * Update sp_BlitzInMemoryOLTP.sql * Update sp_BlitzLock.sql * sp_ineachdb version check Tweaking #1948 so it works. Closes #1948. * Update sp_BlitzCache.sql (#1953) Complete the join between #missing_index_detail and ##bou_BlitzCacheProcs as otherwise on servers running jobs with many steps, each missing indices will cause #missing_index_pretty to grow exponentially, causing sp_BlitzCache to run for hours. * Fixes #1943 - sp_Blitz check if SSIS/SSRS/SSAS are running (#1957) * Update sp_Blitz.sql * Update sp_Blitz.sql * Update sp_Blitz Checks by Priority.md * Update sp_Blitz Checks by Priority.md * Update sp_Blitz Checks by Priority.md * altered search strings because *of course* there's white space. shouldn't hurt too badly because there aren't many services running on sql boxes (hopefully) * #1943 adding URL (#1960) For new SSAS/IS/RS check. Closes #1943. * sp_BlitzCache additional plural checks for @sortorder (#1963) * additional plural checks added in plural checks, also raised error to 16 when invalid sort order is chosen. * removed unnecessary checks * minor typo (#1965) * #1967 sp_Blitz updating supported versions (#1969) SQL 2012 pre-SP4 is out of support. Closes #1967. * #1935 sp_BlitzCache Azure compatibility (#1972) Azure SQL DB compatibility and removing bou from global temp table names. Closes #1935. * #1973 sp_BlitzIndex truncation error (#1974) Fixes #1973. * #1971 add POOL_LOG_RATE_GOVERNOR as poison (#1975) Closes #1971. * #1966 fix sp_Blitz check IDs (#1976) 203 and 224 were swapped in the documentation. Closes #1966. * 20190219 bumping version numbers To prep for imminent release... * 20190219 release Updating install-all-scripts with new versions. * 2019_02 Release Bumping version numbers & dates. * Merge conflicts, good times * Merge conflicts, whee * 2019_02 release Updating build scripts.
Version of the script
sp_BlitzIndex(TM) v7.2 - January 28, 2019: Database [XYZ] as of 2019-02-07 13:15
What is the current behavior?
When you execute a BlitzIndex specifying a database name, and a index name (to get the stats view mode), it will pull stats / histogram from an index in the current database (aka the active database in your SSMS query view) - not the database specified.
If the current behavior is a bug, please provide the steps to reproduce.
Run BlitzIndex for a table, but make sure your current active database is not the same as the database specified.
EXEC sp_BlitzIndex @DatabaseName = 'XYZ', @SchemaName = 'dbo', @TableName = 'XYZ';
It will pull stats / histogram from an index, in the current database - assuming it finds it. I guess it will load by some identifiers that may or may not be in the active database as well. It will find a match in some active databases, but not in others.
What is the expected behavior?
Load stats from the specified database and index, not the current active database.
Which versions of SQL Server and which OS are affected by this issue? Did this work in previous versions of our procedures?
Only tested on SQL 2017. I believe this is a new feature in a very recent update.
The text was updated successfully, but these errors were encountered: