Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

результат работы sp_lock в таблицу [D7, MSSQL]


NewDelpher ©   (2004-09-01 08:49:00) 

Не ругайте сильно за ламерство, ну никак не могу придумать, как мне результат работы exec sp_lock представить в виде "нормальной" таблицы, чтобы иметь возможность джойнить к ней другие или вызывать object_name() для каждого значения ObjID


KSergey   (2004-09-02 07:58:00) [1]

> [11] jocko   (01.09.04 15:47)
> я бы посоветовал посмотреть всетаки как устроена sp_lock
> (а устроена она просто) и к селектику что там сидит добавить
> нужные джойны

Я бы настоятельно не советовал, особенно если используемые внутри таблицы - недокументированы.
Можно влететь на фиг знает какой глюк.
Да и временные таблицы - это нормально для сервера.


jocko   (2004-09-01 15:47:00) [2]

я бы посоветовал посмотреть всетаки как устроена sp_lock (а устроена она просто) и к селектику что там сидит добавить нужные джойны
Вообще эта процедура показывает, если я не ошибаюсь список блокированных пользователей, так какого фига извиняюсь еще и плодить временные таблицы в tempdb, вообще то все блокировки с нее чаще всего и начинаются :)


Nikky   (2004-09-01 11:56:00) [3]

У меня такая фигня на серваке :)

create table #T (
 spid int,
 dbid int,
 ObjId int,
 IndId int,
 Type char (100),
 Resource char (100),
 Mode char (100),
 Status char (100))

insert into #T (spid, dbid, ObjId, IndId, Type, Resource, Mode, Status) exec sp_lock

select
 #T.spid as [Process Id],
 #T.dbid as [Database],
 SP.hostname as [Host],
 SP.program_name as [Application],
 SP.cmd as [Activity],
 SU.name as [Login],
 IsNULL (SO.name, 'No object reference') as [Object]
from #T
left join sysobjects SO (nolock) on #T.ObjId = SO.id
left join master..sysprocesses SP (nolock) on #T.spid = SP.spid
left join sysusers SU (nolock) on SP.uid = SU.uid
where IsNULL (#T.ObjId, 0) <> 0


Ega23   (2004-09-01 11:22:00) [4]

Бывает...  МS DDK читать - вааще отдельная песня...


KSergey   (2004-09-01 11:20:00) [5]

> [7] Ega23 ©   (01.09.04 10:47)

Про типы я в том смысле, что справка не соответствует действительности.


Ega23   (2004-09-01 10:47:00) [6]

Только скобочек не надо в п.2 - а так все хорошо ;)

Я по-памяти писал, у меня всегда с этим напряги: где скобочки, где параметр какой забуду :о)

Вот только с типами полей мне не совсем понятно (читаю BOL от MSSQL7)

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


KSergey   (2004-09-01 10:21:00) [7]

> [3] Ega23 ©   (01.09.04 09:50)

Ага, спасибо. Точно. Наконец-то я это узнал! ;)
Только скобочек не надо в п.2 - а так все хорошо ;)

Вот только с типами полей мне не совсем понятно (читаю BOL от MSSQL7)
Написано Status тип int, а он - nvarchar на самом деле...


NewDelpher   (2004-09-01 10:08:00) [8]

Заработало. Скобки надо было убрать из
Insert into #ttt (exec sp_lock)


NewDelpher   (2004-09-01 09:58:00) [9]

> Ega23 ©   (01.09.04 09:50) [3]
> 1. Создаёшь временную таблицу с полями, получаемыми в результате
> выполнения sp_lock
> 2. Insert into #ttt (exec sp_lock)
> 3. Работаешь с #ttt
> 4. Drop table #ttt


Не работает, выдает:
Incorrect syntax near the keyword 'exec'


Ega23   (2004-09-01 09:50:00) [10]

1. Создаёшь временную таблицу с полями, получаемыми в результате выполнения sp_lock
2. Insert into #ttt (exec sp_lock)
3. Работаешь с #ttt
4. Drop table #ttt


NewDelpher   (2004-09-01 09:32:00) [11]

KSergey ©
Ну курсор-то всё равно создается на основе селекта? Или я не прав?


KSergey   (2004-09-01 09:20:00) [12]

Если не ошибаюсь - курсором как-то можно
Но как?.. Не знаю... Да и не всю выборку, получается..
Короче напрямую - никак


Наверх

Титульная страница Поиск, карта сайта Написать письмо