Форум: "Базы";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
Внизрезультат работы sp_lock в таблицу Найти похожие ветки
← →
NewDelpher (2004-09-01 08:49) [0]Не ругайте сильно за ламерство, ну никак не могу придумать, как мне результат работы exec sp_lock представить в виде "нормальной" таблицы, чтобы иметь возможность джойнить к ней другие или вызывать object_name() для каждого значения ObjID
← →
KSergey © (2004-09-01 09:20) [1]Если не ошибаюсь - курсором как-то можно
Но как?.. Не знаю... Да и не всю выборку, получается..
Короче напрямую - никак
← →
NewDelpher (2004-09-01 09:32) [2]KSergey ©
Ну курсор-то всё равно создается на основе селекта? Или я не прав?
← →
Ega23 © (2004-09-01 09:50) [3]1. Создаёшь временную таблицу с полями, получаемыми в результате выполнения sp_lock
2. Insert into #ttt (exec sp_lock)
3. Работаешь с #ttt
4. Drop table #ttt
← →
NewDelpher (2004-09-01 09:58) [4]> 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"
← →
NewDelpher (2004-09-01 10:08) [5]Заработало. Скобки надо было убрать из
Insert into #ttt (exec sp_lock)
← →
KSergey © (2004-09-01 10:21) [6]> [3] Ega23 © (01.09.04 09:50)
Ага, спасибо. Точно. Наконец-то я это узнал! ;)
Только скобочек не надо в п.2 - а так все хорошо ;)
Вот только с типами полей мне не совсем понятно (читаю BOL от MSSQL7)
Написано Status тип int, а он - nvarchar на самом деле...
← →
Ega23 © (2004-09-01 10:47) [7]Только скобочек не надо в п.2 - а так все хорошо ;)
Я по-памяти писал, у меня всегда с этим напряги: где скобочки, где параметр какой забуду :о)
Вот только с типами полей мне не совсем понятно (читаю BOL от MSSQL7)
В 2000-м как-то можно таблицу в качестве параметра получить и курсор по полям прокрутить, или что-то в этом роде. По-позже посмотрю, сейчас со временем вилы...
← →
KSergey © (2004-09-01 11:20) [8]> [7] Ega23 © (01.09.04 10:47)
Про типы я в том смысле, что справка не соответствует действительности.
← →
Ega23 © (2004-09-01 11:22) [9]Бывает... МS DDK читать - вааще отдельная песня...
← →
Nikky (2004-09-01 11:56) [10]У меня такая фигня на серваке :)
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
← →
jocko (2004-09-01 15:47) [11]я бы посоветовал посмотреть всетаки как устроена sp_lock (а устроена она просто) и к селектику что там сидит добавить нужные джойны
Вообще эта процедура показывает, если я не ошибаюсь список блокированных пользователей, так какого фига извиняюсь еще и плодить временные таблицы в tempdb, вообще то все блокировки с нее чаще всего и начинаются :)
← →
KSergey © (2004-09-02 07:58) [12]> [11] jocko (01.09.04 15:47)
> я бы посоветовал посмотреть всетаки как устроена sp_lock
> (а устроена она просто) и к селектику что там сидит добавить
> нужные джойны
Я бы настоятельно не советовал, особенно если используемые внутри таблицы - недокументированы.
Можно влететь на фиг знает какой глюк.
Да и временные таблицы - это нормально для сервера.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.077 c