更新SQL Server實例所有數據庫表統計信息

引出問題

自從上次菜鳥為老鳥解決了《RDS SQL SERVER 解決中文亂碼問題》問題,老鳥意猶未盡,決定再想個招來刁難刁難菜鳥:“我最近做T-SQL性能調優的時候,經常發現執行計劃中的統計信息不準確,導致SQL Server查詢性能低下,想個辦法幫我一次性更新實例所有數據庫下所有表統計信息吧?”

分析問題

“要一次性更新實例級別所有數據庫下所有表統計信息啊,這個還真的有點犯難”,菜鳥一邊小聲嘀咕,一邊不停的問G哥,終于功夫不負有心人,發現了兩個非常有意思的系統存儲過程。這兩個系統存儲過程均為SQL Server未對外公開(Undocumented)的系統存儲過程,但是對于DBA或者日常數據庫管理人員,非常有用。今天我們就可以使用它們來快速簡潔的解決掉老鳥的問題。
查詢這兩個系統存儲過程,需要在sys.all_objects中查找:

USE master
GO
SELECT * 
FROM sys.all_objects WITH(NOLOCK)
WHERE name IN('sp_msforeachtable','sp_msforeachdb')

如下截圖
01.png
簡單的功能解釋
sys.sp_MSforeachdb:SQL Server遍歷該實例下所有的數據庫,包含系統數據庫。sys.sp_MSforeachtable:SQL Server遍歷某一個數據庫下所有的表對象。

解決問題

好了,有了對這兩個系統存儲過程粗略的認識,讓我們來如何解決老鳥的問題。話不多說,直接代碼伺候

USE master
GODECLARE@sql NVARCHAR(MAX)
;SET@sql = N'
USE [?]
IF ''?'' NOT IN(''master'', ''model'', ''msdb'', ''tempdb'', ''distribution'') 
BEGINRAISERROR(N''----------------------------------------------------------------
Search on database: ?'', 10, 1) WITH NOWAITEXEC SYS.SP_MSFOREACHTABLE N''UPDATE STATISTICS * WITH FULLSCANRAISERROR(''''on table:*'''',10,1) with nowait'',@replacechar =N''*'',@whereand=N''and o.name NOT LIKE ''''#%''''''
END
'
;EXEC SYS.SP_MSFOREACHDB @sql,@replacechar=N'?'

哇,相當牛X,總共僅僅24行代碼解決了老鳥的所有問題,一次性,簡單,快捷,簡潔的更新了老鳥的表統計信息,這下老鳥不會再遇到統計信息未及時更新的問題了。
嘚瑟下執行結果輸出,限于篇幅,省略掉了一些輸出:

----------------------------------------------------------------
Search on database: ReportServer
on table:[dbo].[History]
on table:[dbo].[ConfigurationInfo]
on table:[dbo].[Catalog]
...
on table:[dbo].[ServerUpgradeHistory]
----------------------------------------------------------------
Search on database: ReportServerTempDB
on table:[dbo].[ExecutionCache]
on table:[dbo].[SnapshotData]
...
on table:[dbo].[SessionData]
----------------------------------------------------------------
Search on database: AdventureWorks2008R2
on table:[Production].[ProductInventory]
on table:[Sales].[SpecialOffer]
on table:[Person].[Address]
...
on table:[dbo].[ErrorLog]
----------------------------------------------------------------
...

寫在最后

這段腳本很好很強大,威猛又持久,如果需要在產品環境使用,請選擇在流量低谷時段執行,以免對你的生產線SQL Server數據庫造成超預期的影響。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/542117.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/542117.shtml
英文地址,請注明出處:http://en.pswp.cn/news/542117.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

職工考勤管理信息系統數據庫課設_數據庫課程設計--職工考勤管理信息系統

目錄1概述........................................................................................................................................ 11.1設計背景..................................................................................................…

python—元組

1 . 元組的創建: 1 . 簡介 :元組與列表類似,可以存儲任意數據類型。不同之處在于元組的元素不能修改。屬于不可變數據類型,沒有增刪改。 2 . 創建一個元組: t ([1, 2, 3], ssh, True) #和列表不同是,元組…

java clock計時_Java Clock類| systemDefaultZone()方法與示例

java clock計時Clock Class systemDefaultZone()方法 (Clock Class systemDefaultZone() method) systemDefaultZone() method is available in java.time package. systemDefaultZone()方法在java.time包中可用。 systemDefaultZone() method is used to get the current inst…

從0開始搭建SQL Server AlwaysOn 第四篇(配置異地機房節點)

從0開始搭建SQL Server AlwaysOn 第四篇(配置異地機房節點) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www.cnblogs.com/lyhabc/p/4682028.html第三篇http://www.cnblogs.com/lyhabc/p/4682986.html第四篇http://www.cnblogs.com…

vue 左側菜單隱藏_vue.js 左側二級菜單顯示與隱藏切換的實例代碼

vue點擊切換顯示隱藏*{padding: 0;margin: 0;font-size: 14px;}ul{width: 200px;height: auto;}h2{background: green;border: 1px solid #fff;color: #fff;height: 30px;line-height: 30px;text-indent: 24px;}h3{background: #999;height: 24px;line-height: 24px;border: 1p…

Java LocalDateTime類| 帶示例的getMinute()方法

LocalDateTime類getMinute()方法 (LocalDateTime Class getMinute() method) getMinute() method is available in java.time package. getMinute()方法在java.time包中可用。 getMinute() method is used to get minute-of-hour field value from this date-time object. getM…

python—集合

1. 集合的概念和建立: Python中的集合和數學中的集合類似,可以保存不重復的元素。它有可變集合(set)和不可變集合(frozenset)兩種。 集合是不重復的并且無序的序列。 集合創建可以使用{}以及set()的方式。…

第十九天

今天是學習js的第三天,已經感覺腦內存不夠用了。 想想后續還有這么多Php的課程要學習,真心有點怕怕的。希望以后時間過的慢一些,讓我好好的掌握這門技術吧。 另外,學習js里面還有好多的應用需要自己去掌握,我希望能夠通…

彈性理論法研究樁基受力計算公式_豎向荷載下群樁的承載力分析

豎向荷載下群樁的承載力分析樁基礎在工程建設當中得到廣泛地應用,從安全性上考慮,對群樁承載力的研究尤為重要。文章結合一工程實例,根據現場取得的靜載荷試驗數據,(本文共4頁)閱讀全文>>墻體頂部斜裂縫問題一直是困擾設計和施工人員的重要課題,以往的研究往往將這種斜裂…

Java LocalDate類| getChronology()方法與示例

LocalDate類getChronology()方法 (LocalDate Class getChronology() method) getChronology() method is available in java.time package. getChronology()方法在java.time包中可用。 getChronology() method is used to return the IsoChronology of this LocalDate object. …

python—字典

1.字典的含義: 字典和列表類似,是可變序列,與列表不同的是,字典是無序的可變序列,保存的內容是以 鍵值對 的形式存放的。鍵是唯一的,而值可以是多個。值可以取任意數據了類型,但鍵必須是不可變…

js中加“var”和不加“var”的區別,看完覺得這么多年js白學了

Javascript聲明變量的時候,雖然用var關鍵字聲明和不用關鍵字聲明,很多時候運行并沒有問題,但是這兩種方式還是有區別的。可以正常運行的代碼并不代表是合適的代碼。var num 1; 是在當前域中聲明變量. 如果在方法中聲明&#xff0…

解決方案_智能工廠全套解決方案

最近弱電社群資料更新情況:1、弱電學習圈VIP群資料整理-希望對您有用!2、弱電學習圈VIP技術交流2群成立,歡迎您加入!3、智慧校園整體解決方案!4、智能化弱電項目管理表單大全-弱電項目經理必備!5、弱電項目…

退火算法 貪婪算法_算法貪婪策略簡介

退火算法 貪婪算法介紹 (Introduction) The solution is determined by a sequence of steps each step has given a particular solution and later a complete solution to given the problem can be achieved. In short, while making a choice there should be a greed for…

windows 2008 R2系統安裝撥號v p n詳細配置

windows 2008 R2系統單網卡安裝撥號v p n系統環境:windows 2008 R2操作步驟首先設置服務端在服務器管理器中添加角色“網絡策略和訪問服務”,并安裝以下角色服務右擊路由與遠程訪問,選擇“配置并啟用路由和遠程訪問”右擊路由與遠程訪問&…

python—函數

1. 函數的定義: 1 . 含義:我們把實現某一功能的代碼定義為一個函數,在需要使用時,隨時調用,十分方便。對于函數,簡單理解就是可以完成某功能的代碼塊,可反復使用。 Python提供了許多內建函數&a…

word打開老是配置進度_小白教程 | office出現配置進度框,怎么辦?

最近很多同學在備考二級時候,自己的電腦上office軟件Word或者Excel出問題了,每次打開都會出現配置進度框。這種情況怎么辦呢?這種情況都是注冊表的問題,馬上安排解決之前在 右鍵菜單沒有office新建怎么辦(點擊即可閱讀)也是用注冊…

【踩坑速記】開源日歷控件,順便全面解析開源庫打包發布到Bintray/Jcenter全過程(新),讓開源更簡單~...

一、寫在前面 自使用android studio開始,就被它獨特的依賴方式:compile com.android.support:appcompat-v7:25.0.1所深深吸引,自從有了它,麻麻再也不用擔心依賴第三方jar包繁瑣無趣啦。而,如果自己寫一個開源庫是一種怎…

scala集合中添加元素_如何在Scala中獲得列表的第一個元素?

scala集合中添加元素清單 (List) A list is a linear data structure. It is a collection of elements of the same data types. 列表是線性數據結構。 它是相同數據類型的元素的集合。 Scala libraries have many functions to support the functioning of lists. Methods l…

python—列表、字典生成式

1 列表生成式 Python內置的一種極其強大的生成列表 list 的表達式。返回結果必須是列表。 示例: 需求1:接收變量 k a b s 51 5000 10000 a s.split() li [] for item in s.split():li.append(int(item)) k,a,b li print(k,a,b)運行結果:…