SQL-сервер хранит статистическую информацию обо всех запросах в различных таблицах. Можно использовать следующий код для определения то, что самый долгий рабочий запрос (от sys.dm_exec_query_stats
таблица).
Необходимо выполнить следующие команды DBCC:
Эта команда DBCC очищает кэш сервера и вход перезапусков времени выполнения запроса:
DBCC FREEPROCCACHE
Выполните этот запрос для нахождения самого долгого рабочего запроса:
SELECT DISTINCT TOP 10
t.TEXT QueryName,
s.execution_count AS ExecutionCount,
s.max_elapsed_time AS MaxElapsedTime,
ISNULL(s.total_elapsed_time / s.execution_count, 0) AS AvgElapsedTime,
s.creation_time AS LogCreatedOn,
ISNULL(s.execution_count / DATEDIFF(s, s.creation_time, GETDATE()), 0) AS FrequencyPerSec
FROM sys.dm_exec_query_stats s
CROSS APPLY sys.dm_exec_sql_text( s.sql_handle ) t
ORDER BY
s.max_elapsed_time DESC
GO
Необходимо также смотреть на статью Optimizing SQL Server Query Performance журнала Technet, которая имеет запрос для определения, какой запрос является самым дорогим чтением запрос ввода-вывода, а также руководство о том, как посмотреть на планы выполнения и другую оптимизацию.
Вы, вероятно, увидите пару операторов T-SQL, таких как
RESTORE DATABASE AdventureWorks2012
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'
WITH FILE = 6
NORECOVERY;
и
USE AdventureWorks2012;
DROP USER AbolrousHazem;
GO
, написанных с помощью чего-то вроде sqlcmd , что соответствует вашим потребностям.