2
基於https://www.simple-talk.com/books/sql-books/sql-server-performance-tuning-using-wait-statistics-a-beginners-guide/(第34頁),我試圖創建表並使用Wait Stats填充它。捕獲等待統計
IF NOT EXISTS (
SELECT *
FROM [sys].[tables]
WHERE [name]=N'WaitStats'AND[type] =N'U'
)
CREATE TABLE [dbo].[T_WaitStats](
[RowNum] [BIGINT] IDENTITY(1, 1) ,
[CaptureDate] [DATETIME] ,
[WaitType] [NVARCHAR](120) ,
[Wait_S] [DECIMAL](14, 2) ,
[Resource_S] [DECIMAL](14, 2),
[Signal_S] [DECIMAL](14, 2) ,
[WaitCount] [BIGINT] ,
[Percentage] [DECIMAL](4, 2) ,
[AvgWait_S] [DECIMAL](14, 2),
[AvgRes_S] [DECIMAL](14, 2),
[AvgSig_S] [DECIMAL](14, 2));
GO
INSERT INTO dbo.T_WaitStats([WaitType])
VALUES ('Wait Statistics for '+ CAST(GETDATE() AS NVARCHAR(19)));
INSERT INTO dbo.T_WaitStats(
[CaptureDate],
[WaitType],
[Wait_S],
[Resource_S],
[Signal_S],
[WaitCount],
[Percentage],
[AvgWait_S],
[AvgRes_S],
[AvgSig_S]
)
EXEC(
'WITH [Waits] AS(
SELECT
[wait_type],
[wait_time_ms]/1000.0 AS [Wait_S],
([wait_time_ms] - [signal_wait_time_ms])/1000.0 AS [Resource_S],
[signal_wait_time_ms]/1000.0 AS [Signal_S],
[waiting_tasks_count] AS [WaitCount],
100.0 * [wait_time_ms]/SUM ([wait_time_ms]) OVER() AS [Percentage],
ROW_NUMBER() OVER(ORDER BY [wait_time_ms] DESC) AS [RowNum]
FROM sys.dm_os_wait_stats
WHERE [wait_type] NOT IN (
N''BROKER_EVENTHANDLER'', N''BROKER_RECEIVE_WAITFOR'',
N''BROKER_TASK_STOP'', N''BROKER_TO_FLUSH'',
N''BROKER_TRANSMITTER'', N''CHECKPOINT_QUEUE'',
N''CHKPT'', N''CLR_AUTO_EVENT'',
N''CLR_MANUAL_EVENT''
)
)
SELECT
GETDATE() AS [CaptureDate],
[W1].[wait_type] AS [WaitType],
CAST ([W1].[Wait_S] AS DECIMAL(14, 2)) AS [Wait_S],
CAST ([W1].[Resource_S] AS DECIMAL(14, 2)) AS [Resource_S],
CAST ([W1].[Signal_S] AS DECIMAL(14, 2)) AS [Signal_S],
[W1].[WaitCount] AS [WaitCount],
CAST ([W1].[Percentage] AS DECIMAL(4, 2)) AS [Percentage],
CAST (([W1].[Wait_S]/[W1].[WaitCount]) AS DECIMAL (14, 4))
AS [AvgWait_S],
CAST (([W1].[Resource_S]/[W1].[WaitCount]) AS DECIMAL (14, 4))
AS [AvgWait_S],
CAST (([W1].[Resource_S]/[W1].[WaitCount]) AS DECIMAL (14, 4))
AS [AvgRes_S],
CAST (([W1].[Signal_S]/[W1].[WaitCount]) AS DECIMAL (14, 4))
AS [AvgSig_S]
FROM [Waits] AS [W1]
INNER JOIN [Waits] AS [W2]
ON [W2].[RowNum] <= [W1].[RowNum]
GROUP BY [W1].[RowNum], [W1].[wait_type], [W1].[Wait_S],
[W1].[Resource_S], [W1].[Signal_S], [W1].[WaitCount],
[W1].[Percentage]
HAVING SUM ([W2].[Percentage]) - [W1].[Percentage] < 95;'
);
先插入工作,但第二個給我一個錯誤:
(1 row(s) affected) Msg 213, Level 16, State 7, Line 1 Column name or number of supplied values does not match table definition.
運行第二個語句沒有插入(僅EXEC部分)的作品。 什麼可能會導致此錯誤?