Получить продолжительность выполнения скрипта в SQl Server 2008 R2 - PullRequest
4 голосов
/ 13 марта 2012

У меня есть скрипт для выполнения, и мне нужно время выполнения, как я могу его рассчитать?

Я думаю использовать этот способ:

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)?

Ответы [ 3 ]

4 голосов
/ 13 марта 2012

Используйте таблицу для хранения времени начала и окончания, добавьте также идентификатор процесса. Затем используйте 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

Время от времени усекайте таблицу, чтобы избежать столкновений спида.

4 голосов
/ 13 марта 2012

Посмотрите на SET STATISTICS TIME заявление.

0 голосов
/ 13 марта 2012
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

или, если быть более точным, вы можете использовать УСТАНОВИТЬ ВРЕМЯ СТАТИСТИКИ , которое отображает количество миллисекунд, необходимое для анализа, компиляции и выполнения каждого оператора.

...