我有一个要执行的脚本,需要执行持续时间,我该如何计算呢?
我想用这种方式:
DECLARE @startTime DATETIME
SET @startTime = GETDATE();
--Script
DECLARE @endTime DATETIME
SET @endTime = GETDATE();
PRINT 'Transfer Duration:';
GO
PRINT CONVERT(varchar,@endTime-@startTime,14);
GO
但是因为我使用GO
(我必须)所以有一个错误,那么你有什么建议来计算和打印执行脚本的持续时间(Go
)?
答案 0 :(得分:4)
查看SET STATISTICS TIME
声明。
答案 1 :(得分:4)
使用表来存储开始和结束时间,同时输入您的进程ID。然后使用DATEDIFF()计算经过的时间。
CREATE TABLE Profiling(
spid smallint NOT NULL,
StartTime DATETIME2 NOT NULL,
EndTime DATETIME2
)
INSERT INTO Profiling(spid, StartTime)
SELECT @@SPID, CURRENT_TIMESTAMP
GO
-- your queries come here
-- .....
UPDATE Profiling
SET EndTime = CURRENT_TIMESTAMP
WHERE spid = @@SPID
GO
SELECT DATEDIFF(MS, startTime, EndTime) as MilliSeconds
FROM Profiling
WHERE spid = @@SPID
不时截断表格,以避免spid的冲突。
答案 2 :(得分:0)
Go
DECLARE @startTime DATETIME
SET @startTime = GETDATE();
-- your sql statement
DECLARE @endTime DATETIME
SET @endTime = GETDATE();
PRINT 'Transfer Duration:';
PRINT cast((@endTime-@startTime) AS TIME);
Go
或者更准确一点,您可以使用SET STATISTICS TIME来显示解析,编译和执行每个语句所需的毫秒数。