Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 вопрос по fn_get_sql  [new]
Mordred
Member

Откуда:
Сообщений: 288
пытаюсь получить текущую инструкцию sql процесса:

declare @lock table(spid int,ecid int,status varchar(100),
loginame varchar(100),hostname varchar(100),
blk int,dbname varchar(100),cmd varchar(100),request_id int)

insert into @lock exec sp_who

SELECT
a.*,st.text
from @lock a
inner join master.dbo.sysprocesses c on c.spid=a.spid
CROSS APPLY ::fn_get_sql(c.sql_handle) AS st

но в поле text очень часто имеется что-то вида "create procedure" или "create function"

как это интерпретировать?
22 дек 11, 16:43    [11810542]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по fn_get_sql  [new]
Glory
Member

Откуда:
Сообщений: 104751
Mordred
как это интерпретировать?

Это означает то, что выполняется эта процедура и функция
22 дек 11, 16:48    [11810581]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по fn_get_sql  [new]
Mordred
Member

Откуда:
Сообщений: 288
а почему тогда есть строки (в поле text) вида:
exec proc ...

а есть create proc - в чем разница??
22 дек 11, 16:50    [11810600]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по fn_get_sql  [new]
Mordred
Member

Откуда:
Сообщений: 288
И еще(если можно) поясните плиз:
задача стоит в принципе избежать вызова dbc inputbuffer

может я ее не так решаю?

Подскажите кто сталкивался
22 дек 11, 16:53    [11810623]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по fn_get_sql  [new]
Glory
Member

Откуда:
Сообщений: 104751
Mordred
может я ее не так решаю?

dbcc inputbuffer и fn_get_sql вернут вам одно и тоже
Просто fn_get_sql была добавлена для использования в запросах
22 дек 11, 16:57    [11810662]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по fn_get_sql  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Mordred,

Огласите результат SELECT @@version.

автор
но в поле text очень часто имеется что-то вида "create procedure" или "create function"


И событие SP:Recompile, полагаю, в профайлере так же часто имеется?
22 дек 11, 16:57    [11810664]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по fn_get_sql  [new]
Mordred
Member

Откуда:
Сообщений: 288
to Glory:

про dbcc и fn_get_sql - понял - спасибо

а вот почему в результирующем селекте в поле text есть строки вида: exec proc или select * from
а есть вида: create proc или create func - не понятно, если не сложно подскажите!
22 дек 11, 17:00    [11810685]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по fn_get_sql  [new]
Mordred
Member

Откуда:
Сообщений: 288
to pkarklin:

Microsoft SQL Server 2008 (SP2) - 10.0.4000.0 (X64) Sep 16 2010 19:43:16 Copyright (c) 1988-2008 Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: )

про Recompile я тоже сначала подумал, но уж больно много их тогда должно быть.
22 дек 11, 17:03    [11810710]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по fn_get_sql  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Mordred
to Glory:

про dbcc и fn_get_sql - понял - спасибо

а вот почему в результирующем селекте в поле text есть строки вида: exec proc или select * from
а есть вида: create proc или create func - не понятно, если не сложно подскажите!

А там вроде как в бол есть пример, как на основании функции и substring получить ту часть, которая выполняется в данный момент
22 дек 11, 17:06    [11810741]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по fn_get_sql  [new]
Glory
Member

Откуда:
Сообщений: 104751
Как всегда читает хелп

The fn_get_sql function returns information that is similar to the DBCC INPUTBUFFER command. The following are examples of when the fn_get_sql function can be used because DBCC INPUTBUFFER cannot be:

- When events have more than 255 characters.

- When you have to return the highest current nesting level of a stored procedure. For example, there are two stored procedures that are named sp_1 and sp_2. If sp_1 calls sp_2 and you obtain the handle from the sys.dm_exec_requests dynamic management view while sp_2 is running, the fn_get_sql function returns information about sp_2. Additionally, the fn_get_sql function returns the complete text of the stored procedure at the highest current nesting level.
22 дек 11, 17:11    [11810777]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по fn_get_sql  [new]
Mordred
Member

Откуда:
Сообщений: 288
to Glory - буквально за 1 минуту до вашего сообщения прочитал :) но все равно спасибо
22 дек 11, 17:16    [11810828]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить