Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 MS SQL список выполняющихся и выполненных запросов  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1336
Добрый день всем
2008 (R2) , 2012
(права админа есть - на вс. случай)

Поиском нашел (где то здесь на )
select session_id, status, wait_type, command, last_wait_type, percent_complete  
  , qt.text sql1  
  , total_elapsed_time/1000 as [total_elapsed_time, sec],  
         wait_time/1000 as [wait_time, sec], (total_elapsed_time - wait_time)/1000 as [work_time, sec]  
    from sys.dm_exec_requests as qs  
    CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt  
    --where session_id >= 50 and session_id <> @@spid


Exec sp_who2 (session_id)

1?) (НЕ важный )для удобства хотелось бы значение Exec sp_who2 в таблицу засунуть
2?) Важный
Я вижу там в поле qt.text :
CREATE procedure [dbo].[usp_cb01]   


а конкетного скл из этой процедуры выполняющегося в ДАННЫЙ МОМЕНТ НЕ ВИЖУ

? как можно увидеть какой скл из процедуры выполянется

ps в оракле смотрел такие штуки в пл-скл девелопере и скл-двеелопрер без проблем (при наличии прав)
удивлен что нет (или Не нашел ?) В станд. нтерфейсе SSMS
10 окт 14, 16:05    [16688081]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL список выполняющихся и выполненных запросов  [new]
Glory
Member

Откуда:
Сообщений: 104751
Гулин Федор
1?) (НЕ важный )для удобства хотелось бы значение Exec sp_who2 в таблицу засунуть

Посмотреть содержимое sp_who2 и написать такой же запрос
10 окт 14, 16:07    [16688089]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL список выполняющихся и выполненных запросов  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1336
В 1?) Имелось ввиду набор нужных полей из exec sp_who2
login . hostname , blkby,Dbname, Command, CPU time

по 2?) Я запускал SP руками (ну или через жоб) и хочу знать какой текущий скл из нее выполянется сейчас

зы как плохо что нельзя править свои-же сообщения
10 окт 14, 16:15    [16688126]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL список выполняющихся и выполненных запросов  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1336
Glory
Гулин Федор
1?) (НЕ важный )для удобства хотелось бы значение Exec sp_who2 в таблицу засунуть

Посмотреть содержимое sp_who2 и написать такой же запрос


я про то можно ли 1-м запросмо получить таблицу содеражащую нужные мне поля
(на худой конец написать SP к-я делает результ.таблицу в нужном мне виде )
10 окт 14, 16:16    [16688136]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL список выполняющихся и выполненных запросов  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Гулин Федор,

можно..можно почти все
10 окт 14, 16:19    [16688148]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL список выполняющихся и выполненных запросов  [new]
Glory
Member

Откуда:
Сообщений: 104751
Гулин Федор
я про то можно ли 1-м запросмо получить таблицу содеражащую нужные мне поля

Ну если запрос в процедуре получает эти поля, то и вы сможете
10 окт 14, 16:20    [16688157]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL список выполняющихся и выполненных запросов  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
Гулин Федор
2?) Важный
Я вижу там в поле qt.text :
CREATE procedure [dbo].[usp_cb01]   


а конкетного скл из этой процедуры выполняющегося в ДАННЫЙ МОМЕНТ НЕ ВИЖУ

? как можно увидеть какой скл из процедуры выполянется



в sys.dm_exec_requests есть:
statement_start_offset
int
Number of characters into the currently executing batch or stored procedure at which the currently executing statement starts. Can be used together with the sql_handle, the statement_end_offset, and the sys.dm_exec_sql_text dynamic management function to retrieve the currently executing statement for the request. Is nullable.


и statement_end_offset соответственно.
10 окт 14, 16:21    [16688160]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL список выполняющихся и выполненных запросов  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
daw,

единственно, что, на самом деле их на 2 надо делить. вроде как, документация привирает, и на самом деле это не Number of characters, а number of bytes.
10 окт 14, 16:36    [16688226]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL список выполняющихся и выполненных запросов  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1336
daw, СПАСИБО
, case when statement_start_offset > 0 and statement_end_offset > 0 then
	 substring ( qt.text , statement_start_offset , statement_end_offset - statement_start_offset +1 ) 
	 else null
   end as sql1 
,


по идее че-то похожее должно быть
хотя чего то не то показывает

зы кстати одну SP показывает 2 раза - и оба в статусе suspended
для 1 вроед скл - корректный
а для 2-го с середины
10 окт 14, 16:39    [16688247]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL список выполняющихся и выполненных запросов  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9184
В хелпе есть готовый пример. Там делят на два и вычитают 1.
10 окт 14, 16:39    [16688248]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL список выполняющихся и выполненных запросов  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1336
Владислав Колосов,

СПС
ps кинул бы пример или ссылку
10 окт 14, 17:28    [16688601]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL список выполняющихся и выполненных запросов  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1336
http://www.mssqltips.com/sqlservertip/1811/how-to-isolate-the-current-running-commands-in-sql-server/
10 окт 14, 17:32    [16688626]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL список выполняющихся и выполненных запросов  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1336
ps ну вообщем есил кто еще подскажет как
набор нужных полей из exec sp_who2
login . hostname , blkby,Dbname, Command, CPU time
всунуть в запрос то будет почти идеально
10 окт 14, 18:26    [16688857]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL список выполняющихся и выполненных запросов  [new]
Glory
Member

Откуда:
Сообщений: 104751
Гулин Федор
login . hostname , blkby,Dbname, Command, CPU time

А что этих полей из sys.dm_exec_requests не хватает ? Нужно их "удвоить" ?
10 окт 14, 18:28    [16688868]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL список выполняющихся и выполненных запросов  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Гулин Федор

1?) (НЕ важный )для удобства хотелось бы значение Exec sp_who2 в таблицу засунуть
2?) ? как можно увидеть какой скл из процедуры выполянется

Не мучайтесь, возьмите готовое решение. Там можно и колонки нужные выбирать и в таблицу сохранять и даже схему для этой таблицы получить.
Who is Active
How to Log Activity Using sp_whoisactive in a Loop


+ Выдержка из хелпа:
------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------
@get_full_inner_text BIT = 0 If 1, gets the full stored procedure or running batch, when available
If 0, gets only the actual statement that is currently running in the batch or procedure
------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------
@get_plans TINYINT = 0 Get associated query plans for running tasks, if available
If @get_plans = 1, gets the plan based on the request's statement offset
If @get_plans = 2, gets the entire plan based on the request's plan_handle
------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------
@get_outer_command BIT = 0 Get the associated outer ad hoc query or stored procedure call, if available
------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------
@delta_interval TINYINT = 0 Pull deltas on various metrics
Interval in seconds to wait before doing the second data pull
------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------
@output_column_list VARCHAR(8000) = '...' List of desired output columns, in desired order
Note that the final output will be the intersection of all enabled features and all
columns in the list. Therefore, only columns associated with enabled features will
actually appear in the output. Likewise, removing columns from this list may effectively
disable features, even if they are turned on

Each element in this list must be one of the valid output column names. Names must be
delimited by square brackets. White space, formatting, and additional characters are
allowed, as long as the list contains exact matches of delimited valid column names.
------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------
@destination_table VARCHAR(4000) = '' If set to a non-blank value, the script will attempt to insert into the specified
destination table. Please note that the script will not verify that the table exists,
or that it has the correct schema, before doing the insert.
Table can be specified in one, two, or three-part format
------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------
@return_schema BIT = 0 If set to 1, no data collection will happen and no result set will be returned; instead,
@schema VARCHAR(MAX) = NULL OUTPUT a CREATE TABLE statement will be returned via the @schema parameter, which will match
the schema of the result set that would be returned by using the same collection of the
rest of the parameters. The CREATE TABLE statement will have a placeholder token of
<table_name> in place of an actual table name.
10 окт 14, 23:10    [16689979]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL список выполняющихся и выполненных запросов  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
Гулин Федор,

"1?) (НЕ важный )для удобства хотелось бы значение Exec sp_who2 в таблицу засунуть":

CREATE TABLE #who2(all fields from sp_who2)
INSERT INTO #who2
EXEC sp_who2
SELECT <list of required fields> FROM #who2
DROP TABLE #who2
12 окт 14, 01:04    [16692404]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL список выполняющихся и выполненных запросов  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1336
Glory
Гулин Федор
login . hostname , blkby,Dbname, Command, CPU time

А что этих полей из sys.dm_exec_requests не хватает ? Нужно их "удвоить" ?


Select login , hostname , blkby,Dbname, Command , * from sys.dm_exec_requests
Invalid column name 'login'.


зы SQL 2012 - но все равно СПС за ответы

@Mind Спасибо - по ходу то что надо заодно и код изучу
удивлен что этой ссылки нет где то в шапке
13 окт 14, 15:17    [16697315]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL список выполняющихся и выполненных запросов  [new]
Glory
Member

Откуда:
Сообщений: 104751
Гулин Федор
Select login , hostname , blkby,Dbname, Command , * from sys.dm_exec_requests
Invalid column name 'login'.

А вы только одну sys.dm_exec_requests знаете ? Больше никаких других системных представлений ?
13 окт 14, 15:19    [16697332]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL список выполняющихся и выполненных запросов  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1336
@Mind а че то похожее с блокировками
-- блокирующие сессии:
вот у меня откуда-то

select 
session_id, t.[text]
from sys.dm_exec_requests r
outer apply sys.dm_exec_sql_text(r.sql_handle) t
where 
session_id in
(select blocking_session_id 
	from sys.dm_exec_requests 
	where 
	1=1
	-- blocking_session_id <>0
)


Select top 1 * from tbl_psrecon_reconciliationdetail
не хочет работать ибо

ALTER INDEX [IX_1] ON tbl_psrecon_reconciliationdetail REBUILD
идет
(не ясно почему - ибо вроде др. индексы то есть - почему по ним не посчитать )


хочется таблицу
БД имя-таблицы - блокировка + др. полезная инфа
13 окт 14, 15:46    [16697549]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL список выполняющихся и выполненных запросов  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1336
https://www.sql.ru/forum/1099951/pole-resource-description-dm-tran-locks?hl=dm_tran_locks
вот нашел интересный SQL

но чего-то он у меня висит уже минут 10
13 окт 14, 16:03    [16697692]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL список выполняющихся и выполненных запросов  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Гулин Федор
@Mind а че то похожее с блокировками
Учитесь читать хелпы. В жизни очень помогает.
exec sp_whoisactive @get_locks = 1, @find_block_leaders = 1


Гулин Федор
(не ясно почему - ибо вроде др. индексы то есть - почему по ним не посчитать )
Что у вас там есть, а чего нет, я понятия не имею.
14 окт 14, 20:34    [16704225]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL список выполняющихся и выполненных запросов  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1336
Есть дополнение к вопросу
хочу увидеть ПЛАНЫ ВЫПОЛНЕНИЯ текущих запросов
в оракле это спецю пакет
1 дек 14, 17:45    [16933003]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL список выполняющихся и выполненных запросов  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1336
http://habrahabr.ru/post/136481/
sp_WhoIsActive

Adam Machanic (SQL Server MVP и MCITP) разработал и постоянно дорабатывает хранимую процедуру sp_WhoIsActive, которая опирается как раз на эти самые DMV и чертовски легка в использовании. Скачать последнюю версию sp_WhoIsActive можно здесь.
http://sqlblog.com/blogs/adam_machanic/archive/tags/activity monitoring/default.aspx?p=2

графики там нет - но план вроде есть
1 дек 14, 18:08    [16933197]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL список выполняющихся и выполненных запросов  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
Гулин Федор,

Может поможет
+

SELECT TOP 15

DB_NAME(st.dbid) [Database name],
OBJECT_NAME(st.objectid) [Object name], /* Is NULL for ad hoc and prepared SQL statements */

qs.execution_count [Count],

qs.max_worker_time / 1000 [Max CPU time, ms],
qs.min_worker_time / 1000 [Min CPU time, ms],
qs.total_worker_time / qs.execution_count / 1000 [Avg CPU time, ms], /* Запросы, нагружающие процесссор */
qs.last_worker_time / 1000 [Last CPU time, ms],

qs.max_elapsed_time / 1000 [Max elapsed time, ms],
qs.min_elapsed_time / 1000 [Min elapsed time, ms],
qs.total_elapsed_time / qs.execution_count / 1000 [Avg elapsed time, ms],
qs.last_elapsed_time / 1000 [Last elapsed time, ms],

(qs.total_elapsed_time - qs.total_worker_time)/ 1000 / qs.execution_count [Avg time blocked, ms], /* Запросы, страдающие от блокировки */
/*
qs.max_clr_time / 1000 [Max CLR time, ms],
qs.min_clr_time / 1000 [Min CLR time, ms],
qs.total_clr_time / qs.execution_count / 1000 [Avg CLR time, ms],
qs.last_clr_time / 1000 [Last CLR time, ms],
*/
qs.max_physical_reads [Max physical reads],
qs.min_physical_reads [Min physical reads],
qs.total_physical_reads / qs.execution_count [Avg physical reads],
qs.last_physical_reads [Last physical reads],

qs.max_logical_reads [Max logical reads],
qs.min_logical_reads [Min logical reads],
qs.total_logical_reads / qs.execution_count [Avg logical reads],
qs.last_logical_reads [Last logical reads],

qs.max_logical_writes [Max logical writes],
qs.min_logical_writes [Min logical writes],
qs.total_logical_writes / qs.execution_count [Avg logical writes],
qs.last_logical_writes [Last logical writes],

(qs.total_logical_reads + qs.total_logical_writes) / qs.execution_count [Avg logical IO], /* Запросы с высокими издержками на логический ввод-вывод */

qs.last_execution_time [Last dateTime exec],

SUBSTRING(
st.text, /* Is NULL for encrypted objects */
(qs.statement_start_offset/2) + 1,
(
(
CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset
)/2
) + 1
) AS [Statement text individual], /* Тот запрос, который выполняется сейчас */

st.text [Statement text parent],

qp.query_plan AS [Statement plan],
tqp.query_plan AS [Statement text plan]
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) AS qp
CROSS APPLY sys.dm_exec_text_query_plan(qs.plan_handle, 0, -1) AS tqp
ORDER BY [Avg CPU time, ms] DESC
GO

SELECT
deReq.session_id [SPID],
deReq.start_time [Время старта SPID],
CAST(deReq.percent_complete AS decimal(5, 2)) [Прогрес, %],
CAST(deReq.total_elapsed_time AS varchar) + ' / ' + CAST(deReq.total_elapsed_time/1000/60 AS varchar) [Время выполнения, ms/min],
deReq.blocking_session_id [SPID block],
deReq.status [Status],
deReq.command [Command],
DB_NAME(deReq.database_id) [DB name],
USER_NAME(deReq.user_id) [User name],
deReq.wait_resource [Wait resource],
deReq.wait_type [Wait type],
deReq.reads [Reads],
deReq.logical_reads [Logic reads],
deReq.writes [Writes],
CASE deReq.transaction_isolation_level
WHEN 0 THEN 'Unspecified'
WHEN 1 THEN 'ReadUncomitted'
WHEN 2 THEN 'ReadCommitted'
WHEN 3 THEN 'Repeatable'
WHEN 4 THEN 'Serializable'
WHEN 5 THEN 'Snapshot'
END [Isolation level],
deReq.row_count [Row count to client],
deReq.granted_query_memory * 8 [Total Granted Memory, Kb],
deSes.host_name [Host name]
,IsNull(deSes.program_name, 'Internal sessions') [Program name]
,IsNull(deSes.client_interface_name, 'Internal sessions') [Protocol name]
,deSes.login_name [Login name]
,deSes.nt_user_name [NT user name]
,deSes.original_login_name [Original Login name]
,st.text [T-SQL]
,qp.query_plan [Query Plan]
FROM sys.dm_exec_requests deReq
INNER JOIN sys.dm_exec_sessions deSes
ON deReq.session_id = deSes.session_id
CROSS APPLY sys.dm_exec_sql_text(deReq.sql_handle) AS st
CROSS APPLY sys.dm_exec_query_plan(deReq.plan_handle) AS qp
WHERE
deReq.session_id <> @@SPID
AND
deReq.session_id >= 50
ORDER BY deReq.session_id
GO

CREATE TABLE #Who
(spid smallint, ecid smallint, status nchar(30), loginame nchar(128), hostname nchar(128), blk char(5), dbname nchar(128) NULL, cmd nchar(16), request_id int)

INSERT INTO #Who EXEC sp_who

SELECT
/* Идентификатор сеанса для блокирующего процесса (тот, кто блокирует) */
der.session_id [Spid],
/* Если der.session_id = -2, то блокирует потерянная распределенная транзакция */
der.start_time [Request arrived],
der.[Status],
der.[Command],
SUBSTRING(
st.text,
(der.statement_start_offset/2) + 1,
(
(
CASE der.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE der.statement_end_offset
END - der.statement_start_offset
) / 2
) + 1
) AS [Statement text],
qp.query_plan AS [Statement plan]
FROM sys.dm_exec_requests AS der
CROSS APPLY sys.dm_exec_sql_text(der.sql_handle) AS st
CROSS APPLY sys.dm_exec_query_plan(der.plan_handle) AS qp
WHERE
der.session_id <> @@SPID
AND
der.session_id IN
(
SELECT blk FROM #Who
WHERE
spid <> @@SPID AND spid >= 50 AND blk > 0
GROUP BY blk
)

DROP TABLE #Who
GO

1 дек 14, 19:11    [16933555]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL список выполняющихся и выполненных запросов  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Гулин Федор
графики там нет
MS Paint?
1 дек 14, 20:01    [16933794]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить