THE 3 BIG DATA
2018年2月25日 星期日
2018年2月5日 星期一
SQL Server 2017開始不再提供SP更新檔
SQL Server Service Packs are discontinued starting from SQL Server 2017
https://support.microsoft.com/en-us/help/4041553/sql-server-service-packs-are-discontinued-starting-from-sql-server
2017年7月14日 星期五
孤兒帳號
CREATE LOGIN [appuser1] WITH PASSWORD='Pa$$w0rd1';
CREATE LOGIN [reportuser1] WITH PASSWORD='Pa$$w0rd1';
EXEC sp_change_users_login @Action = 'Update_One', @UserNamePattern = 'appuser1', @LoginName = 'appuser1';
EXEC sp_change_users_login @Action = 'Report'
drop login appuser1
drop DATABASE TSQL
CREATE LOGIN [reportuser1] WITH PASSWORD='Pa$$w0rd1';
EXEC sp_change_users_login @Action = 'Update_One', @UserNamePattern = 'appuser1', @LoginName = 'appuser1';
EXEC sp_change_users_login @Action = 'Report'
drop login appuser1
drop DATABASE TSQL
2017年7月8日 星期六
2017年7月7日 星期五
查出被咬住的連線
1.先下SQL語法,查出被咬住的連線
select * from master.dbo.sysprocesses
SELECT c.session_id, c.connect_time,s.login_time, c.client_net_address,s.login_name,s.status
FROM sys.dm_exec_connections c left join sys.dm_exec_sessions s
on c.session_id = s.session_id
where login_name='DESKTOP-H68674P\tony'
2.然後輸入 要踢出去的連線編號,就可以把咬住的連線踢出去了
sp_lock
dbcc inputbuffer(58)
kill 58
select * from master.dbo.sysprocesses
SELECT c.session_id, c.connect_time,s.login_time, c.client_net_address,s.login_name,s.status
FROM sys.dm_exec_connections c left join sys.dm_exec_sessions s
on c.session_id = s.session_id
where login_name='DESKTOP-H68674P\tony'
2.然後輸入 要踢出去的連線編號,就可以把咬住的連線踢出去了
sp_lock
dbcc inputbuffer(58)
kill 58
2017年7月6日 星期四
TempDB
這篇文章主要說明 TempDB 在 SQL Server 所扮演的角色、對於整體效能的影響以及效能建議的設定。
磁碟效能瓶頸
因為資料庫資料對於磁碟資料的寫入原則上分為兩大類,
- 一類是使用者資料的寫入,這類的資料SQL Server Engine 會透過 “非同步”的方式寫入到磁碟,附檔名為 *.MDF 。”非同步”寫入的意義是:資料庫會累積到一段時間後,才會整批寫入磁碟檔案。並不會立刻就同步寫入。
- 另一類的資料寫入是Transaction Log (*.LDF),這類的寫入是”同步’寫入。也就是說每一筆資料的更新,SQL 必須要記錄到 Transaction Log 之後才會繼續接下來的動作。因為一定要先記錄 Transaction Log也是因為要達到 Rollback 的目的。因此,寫入 Transaction Log 的所在磁碟速度的快慢,也會對於SQL Server 整體的效能有直接的影響。
為什麼 TempDB會變成瓶頸?
原因主要在於在一些特定的”動作”是需要經過 TempDB ,這些”動作” 一定要等到TempDB處理完之後才會繼續進行,
因此 TempDB 處理的效能就會造成這些”動作”的瓶頸,所以下一個問題是,那麼到底有哪些”動作”會跟TempDB有關呢?
另外一個原因,TempDB 只有一個!! Yes. 所有的 database 都會共用這個 TempDB,因此相互等待的問題就會出現。
TempDB 負責什麼?
MS SQL Server 中,tempDB 主要負責的角色有三大類型
- User Objects: 例如 System Tables, Indexes, 使用者定義的Temp Tables/indexes或是當記憶體不足時,就會轉向跟TempDB暫存。
- Internal Objects: 執行DBCC checkDB時所需要的暫存資料、Cursor、Hash Join、或是因為查詢語句中 Group by, Oder By, Union,sort,distinct運算所需要的暫存空間、Rebuild Index
- Version Stores: 因為 isolation level (例如: read committed、snapshot) 所需要的暫存空間。因為資料修改需求,如Trigger, Online Index Operations等
常見的情況,針對 Query SQL Statement 來說,如果該 Query 語句中有用到 Group by, Oder By, Union,sort,distinct,就會需要用到 TempDB。
因為 SQL database 在查詢出資料完之後,需要做一些”整理”才有辦法回傳出結果,這個暫時整理的地方就是 TempDB
TempDB 的一些特性
TempDB有一些特性,這邊列舉說明:
- TempDB 既然稱為”暫存”,所以會在每次SQL Server 服務 stop/start 的時候被清空
- 預設TempDB 會有8MB MDF 與1 MB LDF。(什麼是MDF, LDF ? 參考上述說明)
- 預設MDF 會自動 10% 的檔案大小成長。
- 預設每個 database instance 只會有一個 TempDB。(這也是效能瓶頸的主要原因之一)
- TempDB 可以由多個實體檔案所組成。(將實體檔案分散在不同的”實體”硬碟,這也是校能條件會比較建議的部分。)
- TempDB 只會使用 Simple Recovery Mode. 很多的設定不能夠讓使用者修改。因為畢竟 TempDB 會SQL Server 用的暫存工作DB,不是使用者 Database。
- TempDB 不像其他使用者Database 一般,無法被backup, restore, attach等
- TempDB 對於Transaction Logs 原則上來說,會用最少的 logs 來記錄。每一次SQL Server checkpoint 時,該TempDB的trans logs 會被刪除。
TempDB遇到效能問題的種類
那麼TempDB 會導致怎樣的問題呢? 可以分為三大類
TempDB 問題一
遇到磁碟上存取的 Disk I/O 效能瓶頸。這也是比較常見的問題。如果該磁碟有其他應用系統讀取,
或是磁碟效能比較慢的時候,就會反應到SQL Server 效能。
TempDB 問題二
因為 TempDB 只有一個,當所有的Database 都需要使用TempDB 時,只能循序等待。所以會產生競爭等待使用 TempDB 的問題。
TempDB問題三:
磁碟空間不足。這類的問題 Error code 多半是 1101, 1105, 3959, 3967。另外有可能會有異常3958 or 3966
如何觀察 TempDB 磁碟效能瓶頸?
- 可以利用 Performance monitor 觀察 tempDB 所在的磁碟讀取的效能狀況
- Avg Disk Sec/Read 與 Avg Disk Sec/Write 這兩個指標
- 一般來說 10~20 ms 是比較正常的讀取效能。如果超過 50-100ms 或是甚至超過 100 ms 表示該磁碟讀取效能有嚴重的問題
- 另外可以透過這兩個 counters 記錄 baseline。Worktables Created/sec 。Workfiles Created/sec
如何觀察 TempDB是否因為許多Database競爭讀取?
可以利用下列的 SQL Query 查詢,
這個 Query 就會列出,目前因為等待 TempDB 的關係等多久 wait_duration_ms?
| Select session_id As SessionID, wait_duration_ms, resource_description From sys.dm_os_waiting_tasks Where wait_type like ‘pagelatch_%’ And (resource_description like ‘2:%:1’ Or resource_description Like ‘2:%:2’ Or resource_description Like ‘2:%:3’) |
誰用最多 TempDB?
我們透過這個系統資訊得知 sys.dm_db_file_space_usage
查詢結果是 # of Page ,一個 Page 為 8K,因此可以乘以 8 就會得知該空間大小
| select sum user_object_reserved_page_count sum internal_object_reserved_page_count sum version_store_reserved_page_count from sys.dm_db_file_space_usage |
TempDB 設定上一般效能建議
- 盡量少用到 tempDB。因為 TempDB 只有一個,而且是所有的資料庫共用競爭使用,因此如果可以在Query 語句中減少或是降低會使用到TempDB的語句就可以避免。
- 增加記憶體。增加記憶體有助於減少TempDB的使用。因為當記憶體不足的時候,資料庫就會轉向求助於TempDB.
- 將TempDB放置在 disk IO較快的硬碟上。建議 RAID 1 or RAID 10。因為 RAID 5 會帶來比較多額外的磁碟讀寫的負荷。
- 預先配置TempDB 較多的磁碟空間。這個目的主要是避免讓tempDB經常性的需要重新配置磁碟空間所帶來的額外磁碟運作。
- 盡量不要做 Shrink DB的動作
- 將TempDB 切割為等份的實體檔案。並且將這些檔案放在不同的實體硬碟。因為這可以讓硬碟可以對這些檔案做同時讀取的動作。
避免使用TempDB?
怎麼盡量避免使用TempDB呢? 這部分一般來說的通則是讓Query 執行更有效率才思考。例如:
- 不要回傳過多不需要的欄位資訊
- 如果可以的話,Sort 可以在 client 端執行,或是選擇適當的 Clustered index
- 避免使用 Union or select Distinct
- 避免使用 temp Table。如果真的需要,可以考慮建立一個使用者 Table。
- 避免使用過大的資料型態,例如nvarchar
- 避免使用 Trigger
- 避免使用 row-versioning transaction
- 避免使用cursors
- 需要 re-build index 的時候,盡量在離峰時間
- 執行 DBCC checkDB的時候,盡量安排在離峰時間
當然,這些情境可以避免使用到 tempDB,並不是一定不能使用
另外一個角度是,可以增加TempDB 內暫存物件的重複被使用性,例如使用 Stored procedure
增加記憶體會幫助TempDB嗎?
資料庫原則上會把所需要的資料與執行計畫存放在 Buffer Cache
當記憶體的 Buffer Cache 不足夠的時候,就會跟 TempDB 要儲存空間
換句話說,當有記憶體效能瓶頸的時候,增加記憶體才有助於整體的效能
如果效能瓶頸不是在記憶體的時候,增加再多的記憶體都不會對 TempDB效能有所幫助
Auto Statistics on
預設 Auto Update/Create Statistics 為 On,保留預設值
因為SQL Server 可以根據這些統計資訊,對於 Query 做出比較好的判斷
預先配置 TempDB 空間大小
可以透過下列指令,修改 TempDB 的空間大小
因為預設為 8MB,每次自動成長 10%。每一次自動成長時,也會帶來相關的磁碟額外的 overhead.
但是,下一個問題是,TempDB 大小怎樣才適合呢? 其實沒有一定
如果有專門的硬碟,是專門存放TempDB,那麼大可以設定該硬碟的 50~80%空間給 tempDB使用
但是多半的情況,我們沒有專門一顆硬碟給 TempDB,這種情況下,其實要經過一些觀察,
透過上述說的 performance monitor counter 觀察TempDB的大小量來建立一個基準
| Use Master; goAlter Database TempDB Modify File (name = tempdev, size = 30MB); GoAlter Database TempDB Modify File (Name = tempLog, Size = 10MB)Go |
不要試著Shrink TempDB 大小
在某些狀況下TempDB或許會成長的很大,通長時間的經過,會慢慢恢復正常的大小,這些都是正常的狀況
因為Shrink TempDB會造成過多額外的磁碟與運作的 overhead,
如果真的要讓 tempDB空間變小的話,最有效率的方式反而是重新啟動 SQL Server service
TempDB的資料將在下一次 SQL Server重新被啟動的時候被清空
將TempDB切割為多份等份的檔案
這邊主要要切割多份等份的檔案為 MDF.
為什麼要等份的檔案大小呢? 因為SQL Server 會根據檔案大小來決定平均來說要用哪一個 tempDB 檔案,
如果有個檔案特別大的話,那麼那個檔案會被使用到的機率相對會比較大。
但是,我們比較希望的是,TempDB檔案的使用是可以被平均分散在這些不同的檔案。
所以,Auto growth 的比率,當然也要設定為相同。確定每個檔案的大小都會相同。
另外,建議存放在不同的實體磁碟,因為這樣每個磁碟的讀取就可以同步進行。讀取這些檔案。
要切割多少 TempDB檔案?
原則上,如果該電腦為 8 核心的 CPU,建議可以將TempDB檔案切割 4~8個等份。
主要原因是因為,我們希望平行處理所能帶來一些效能上的幫助。
希望這篇文章讓您對 TempDB有更深一層的了解。
微軟官方參考資料
https://msdn.microsoft.com/zh-tw/library/ms190768.aspx
https://technet.microsoft.com/zh-tw/library/ms175527(v=sql.105).aspx
固定伺服器角色
| 固定伺服器角色 | 說明 |
| sysadmin | 在 SQL Server 中執行任何活動。這個角色的權限會跨越所有其他的伺服器固定角色。 |
| serveradmin | 設定伺服器的所有設定值。 |
| setupadmin | 新增/移除連結伺服器,並執行部分系統預存程序,如sp_serveroption。 |
| securityadmin | 管理伺服器登入。 |
| processadmin | 管理 SQL Server 執行個體中執行的處理。 |
| database creators | 建立與更改資料庫。 |
| diskadmin | 管理磁碟檔案。 |
| bulkadmin | 執行 BULK INSERT 陳述式,亦即可以執行大量插入作業。 |
統計資料庫檔案大小
-- sp_MSforeachdb
-- http://www.dotblogs.com.tw/ricochen/archive/2012/01/19/66712.aspx
-- sp_spaceused
-- http://www.howtogeek.com/howto/database/determine-size-of-a-table-in-sql-server/
-- http://sqlserverplanet.com/dba/using-sp_spaceused
-- sp_helpdb
-- http://msdn.microsoft.com/zh-tw/library/ms178568.aspx
-- http://dba.stackexchange.com/questions/8332/print-database-size-from-sp-spaceused
-- 法一 : 使用 sp_spaceused
USE master
GO
-- 如果資料庫統計值差太多,請先執行更新使用率的DBCC指令
EXEC sp_MSforeachdb 'DBCC UPDATEUSAGE (?)'
EXEC sp_MSforeachdb 'USE ? EXEC sp_spaceused'
EXEC sp_MSforeachdb 'USE ? EXEC sp_updatestats'
-- 法二 : 使用 sp_helpdb
USE master
GO
DECLARE @DBINFO TABLE(
dbname sysname,
db_size varchar(20),
owner sysname null,
dbid int,
created datetime,
status varchar(1000),
compat int
)
INSERT INTO @DBINFO
EXEC sp_helpdb
SELECT dbname,db_size
FROM
@DBINFO
ORDER BY
db_size DESC
統計資料庫實體檔案空間使用情況
-- 資料來源 : 德瑞克老師的上課筆記
-- 單一資料庫查詢
USE master
GO
SELECT name N'邏輯名稱'
, size / 128.0 N'使用的磁碟空間(MB)'
, cast(fileproperty(name, 'SpaceUsed') AS INT) / 128.0 N'資料實際上使用的空間(MB)'
, size / 128.0 - cast(fileproperty(name, 'SpaceUsed') AS INT) / 128.0 N'剩餘的可用空間(MB)'
, physical_name N'實體檔案位置'
FROM
sys.database_files;
GO
-- 全部資料庫查詢
USE master
GO
CREATE table ##DBUSAGE (
[資料庫名稱] sysname,
[邏輯名稱] sysname,
[使用的磁碟空間(MB)] float,
[資料實際上使用的空間(MB)] float,
[剩餘的可用空間(MB)] float ,
[實體檔案位置] sysname
)
EXEC sp_Msforeachdb @command1 = 'use ? insert into ##DBUSAGE
SELECT ''?'' as N''資料庫名稱'' , name N''邏輯名稱'' , size/128.0 N''使用的磁碟空間(MB)'' ,
CAST(FILEPROPERTY(name, ''SpaceUsed'') AS int)/128.0 N''資料實際上使用的空間(MB)''
,size/128.0 - CAST(FILEPROPERTY(name, ''SpaceUsed'') AS int)/128.0 N''剩餘的可用空間(MB)''
, physical_name N''實體檔案位置''
FROM sys.database_files';
GO
SELECT *
FROM
##DBUSAGE
ORDER BY
[資料庫名稱]
DROP TABLE ##DBUSAGE
GO
2017年5月7日 星期日
2016年12月27日 星期二
2016年12月22日 星期四
顯示系統所有的message
USE master
GO
-- 顯示系統所有的message
-- 1033:英文 1028:繁體中文
SELECT *
FROM
sys.messages
WHERE
language_id IN (1033, 1028)
ORDER BY
2
GO
GO
-- 顯示系統所有的message
-- 1033:英文 1028:繁體中文
SELECT *
FROM
sys.messages
WHERE
language_id IN (1033, 1028)
ORDER BY
2
GO
2016年12月14日 星期三
清空暫存cache
DBCC FREESYSTEMCACHE('ALL')-- that will clear all cached objects, including not only internal objects, but also cached query plans.
DBCC FREESYSTEMCACHE ('tempdb') -- clears cache for tempdb
DBCC FREESYSTEMCACHE ('Temporary Tables & Table Variables') -- clears all the temp table and variables
DBCC FREESYSTEMCACHE ('tempdb') -- clears cache for tempdb
DBCC FREESYSTEMCACHE ('Temporary Tables & Table Variables') -- clears all the temp table and variables
設定tempdb
/* Re-sizing TempDB to 8 GB */
USE [master];
GO
alter database tempdb modify file (name='tempdev', size = 8GB);
GO
/* Adding three additional files */
USE [master];
GO
ALTER DATABASE [tempdb] ADD FILE (NAME = N'tempdev2', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER2014\MSSQL\DATA\tempdev2.ndf' , SIZE = 8GB , FILEGROWTH = 0);
ALTER DATABASE [tempdb] ADD FILE (NAME = N'tempdev3', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER2014\MSSQL\DATA\tempdev3.ndf' , SIZE = 8GB , FILEGROWTH = 0);
ALTER DATABASE [tempdb] ADD FILE (NAME = N'tempdev4', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER2014\MSSQL\DATA\tempdev4.ndf' , SIZE = 8GB , FILEGROWTH = 0);
GO
USE [master];
GO
alter database tempdb modify file (name='tempdev', size = 8GB);
GO
/* Adding three additional files */
USE [master];
GO
ALTER DATABASE [tempdb] ADD FILE (NAME = N'tempdev2', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER2014\MSSQL\DATA\tempdev2.ndf' , SIZE = 8GB , FILEGROWTH = 0);
ALTER DATABASE [tempdb] ADD FILE (NAME = N'tempdev3', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER2014\MSSQL\DATA\tempdev3.ndf' , SIZE = 8GB , FILEGROWTH = 0);
ALTER DATABASE [tempdb] ADD FILE (NAME = N'tempdev4', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER2014\MSSQL\DATA\tempdev4.ndf' , SIZE = 8GB , FILEGROWTH = 0);
GO
2016年11月21日 星期一
2016年11月7日 星期一
虛擬團隊會比園區還要重要
「虛擬團隊會比園區還要重要」,這就是為何在過去新政府推動的「亞洲矽谷」中間加一個點,變成「亞洲・矽谷」,這個點就是所謂的連結。
現在軟體進步,已經不需要在特定地方才能工作。
自己一個人貢獻有限,但如果資料都能公開的話,就能讓這個社會感興趣想當推動的人,都能貢獻他們的想法。
現在軟體進步,已經不需要在特定地方才能工作。
自己一個人貢獻有限,但如果資料都能公開的話,就能讓這個社會感興趣想當推動的人,都能貢獻他們的想法。
2016年10月23日 星期日
2016年10月20日 星期四
2016年10月18日 星期二
linux centos 6.4 升級 6.8
linux centos 6.4 升級 6.8
網卡eth0 會變成 eth1 ,無法找到網卡,網路會出問題。
要安裝 整合軟體 (Linux Integration Services Version 3.4 for Hyper-V)
網卡eth0 會變成 eth1 ,無法找到網卡,網路會出問題。
要安裝 整合軟體 (Linux Integration Services Version 3.4 for Hyper-V)
2016年10月5日 星期三
2016年10月3日 星期一
Microsoft® SQL Server® 2016 Express
Microsoft® SQL Server® 2016 Express
是免費的資料管理系統,功能強而穩定,可以為輕量型網站與桌面應用程式提供豐富可靠的資料存放區。
限制:Microsoft SQL Server Express 支援 1 顆實體處理器、1 GB 記憶體和 10 GB 儲存空間
2016年9月16日 星期五
2016年9月9日 星期五
2016年8月16日 星期二
2016年8月9日 星期二
SQL SERVER 2008 Express 最大同時連線數語法
SQL SERVER 2008 Express 最大同時連線數語法:
select @@Max_Connections
顯示為32767,要同時有32767個連線數也不容易。
在 「SSMS工具-->物件總管-->任一資料庫-->可程式性-->系統函數」之下,有許多實用的函數,請多加利用。2016年7月21日 星期四
2016年7月19日 星期二
2016年7月10日 星期日
see 跟 seen用法
A: "Do you watch Friends?" B: "I've seen it, but I don't follow it."
answer:
YES-->Yes. I like watching it.
NO -->No. I don't
NOT 100% sure , use "seen"-->I've seen it, but I don't watch it all the time
-->"I've seen it, but I don't follow it."
example:choose whice one is correct ?
you've never seen me climb a tree
you've never see me climb a tree
answer:
YES-->Yes. I like watching it.
NO -->No. I don't
NOT 100% sure , use "seen"-->I've seen it, but I don't watch it all the time
-->"I've seen it, but I don't follow it."
example:choose whice one is correct ?
you've never seen me climb a tree
you've never see me climb a tree
2016年6月16日 星期四
更新 SQL SERVER
Use the following table to determine whether your current version of SQL Server already has support for TLS 1.2 or whether you have to download an update to enable TLS 1.2 support. Use the download links in the table to obtain the server updates that are applicable to your environment.
https://support.microsoft.com/en-us/kb/3135244
https://support.microsoft.com/en-us/kb/3135244
| SQL Server 2014 SP1 | 12.0.4439.1 | Cumulative Update 5 for SQL Server 2014 SP1 | KB 3052404 FIX: You cannot use the Transport Layer Security protocol version 1.2 to connect to a server that is running SQL Server 2014 or SQL Server 2012 |
2016年6月15日 星期三
查看blocking現像
SELECT * FROM sys.sysprocesses s
CROSS APPLY sys.dm_exec_sql_text(sql_handle)
WHERE s.blocked > 0
查看SQL Server Profiler檔案
使用SQL Server Profiler產生d:\20160615.TRC後,使用下列語法查看內容
SELECT *
FROM fn_trace_gettable
('d:\20160615.TRC',DEFAULT)
ORDER BY CPU DESC
SELECT *
FROM fn_trace_gettable
('d:\20160615.TRC',DEFAULT)
ORDER BY CPU DESC
2016年6月3日 星期五
SQL Profiler 不適合長時間的進行
SQL Profiler此工具錄製完成後,並沒有圖型化的介面,只有單純的SQL語法檢示,所以只能自行分析找出問題,方法上較常見的就是將追蹤資料轉存到資料庫之後,再透過 SQL 語法進行分析,從其中找出 CPU、I/O 使用資源較高的部份,另外也可以找出執行最久的語法,但是此工具錄製時,由於消耗的資源較多,所以較不適合長時間的進行,若長時間錄製,會出現錯誤訊息或錯誤視窗以中止錄製。
2016年5月25日 星期三
所有資料庫資訊匯入
SELECT DB_NAME(mf.database_id) AS databaseName ,
mf.physical_name ,
divfs.num_of_reads ,
--other columns removed in this section. See Listing 6.14 for complete code
GETDATE() AS baselineDate
INTO #baseline
FROM sys.dm_io_virtual_file_stats(NULL, NULL) AS divfs
JOIN sys.master_files AS mf ON mf.database_id = divfs.database_id
AND mf.file_id = divfs.file_id
SELECT DB_NAME(mf.database_id) AS databaseName ,
mf.physical_name ,
divfs.num_of_reads ,
--other columns removed in this section. See Listing 6.14 for complete code
GETDATE() AS baselineDate
INTO #baseline
FROM sys.dm_io_virtual_file_stats(NULL, NULL) AS divfs
JOIN sys.master_files AS mf ON mf.database_id = divfs.database_id
AND mf.file_id = divfs.file_id
查看os_wait_stats狀態
查看os_wait_stats狀態
SELECT wait_type , SUM(wait_time_ms / 1000) AS [wait_time_s]
FROM sys.dm_os_wait_stats DOWS WHERE wait_type NOT IN ( 'SLEEP_TASK', 'BROKER_TASK_STOP', 'SQLTRACE_BUFFER_FLUSH', 'CLR_AUTO_EVENT', 'CLR_MANUAL_EVENT', 'LAZYWRITER_SLEEP' ) GROUP BY wait_type ORDER BY SUM(wait_time_ms) DESC
SELECT wait_type , SUM(wait_time_ms / 1000) AS [wait_time_s]
FROM sys.dm_os_wait_stats DOWS WHERE wait_type NOT IN ( 'SLEEP_TASK', 'BROKER_TASK_STOP', 'SQLTRACE_BUFFER_FLUSH', 'CLR_AUTO_EVENT', 'CLR_MANUAL_EVENT', 'LAZYWRITER_SLEEP' ) GROUP BY wait_type ORDER BY SUM(wait_time_ms) DESC
訂閱:
意見 (Atom)






