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

Откуда:
Сообщений: 181
Не работает update:-(
create table #proc (lname varchar(512), pname varchar(8000))
insert into #proc (lname, pname)
select login_name, ''
FROM master.sys.dm_exec_sessions
group by login_name
create clustered index idx_login_name on #proc (lname)

update #proc set
pname = pname + isnull(ss.program_name, '')
from master.sys.dm_exec_sessions ss
where lname = ss.login_name

select * from #proc
drop table #proc

select login_name, program_name
FROM master.sys.dm_exec_sessions
group by login_name, program_name


В чем проблема?
31 авг 09, 16:27    [7599059]     Ответить | Цитировать Сообщить модератору
 Re: обновление полей одним UPDATE  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
rtrim?

для спящего время бодрствования равносильно сну
31 авг 09, 16:30    [7599080]     Ответить | Цитировать Сообщить модератору
 Re: обновление полей одним UPDATE  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36808
Так прям и молвит человечьим голосом: "Не работайууу..."?

Сообщение было отредактировано: 31 авг 09, 16:31
31 авг 09, 16:31    [7599081]     Ответить | Цитировать Сообщить модератору
 Re: обновление полей одним UPDATE  [new]
vizier
Member

Откуда:
Сообщений: 181
where rtrim(ltrim(lname)) = rtrim(ltrim(ss.login_name))

так тож не хочет
31 авг 09, 16:32    [7599087]     Ответить | Цитировать Сообщить модератору
 Re: обновление полей одним UPDATE  [new]
Supra93
Member

Откуда:
Сообщений: 8174
vizier
where rtrim(ltrim(lname)) = rtrim(ltrim(ss.login_name))

так тож не хочет

не хочет что?
31 авг 09, 16:35    [7599096]     Ответить | Цитировать Сообщить модератору
 Re: обновление полей одним UPDATE  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
create table #proc (lname varchar(512), pname varchar(8000))
insert into #proc (lname, pname)
select login_name, ''
FROM master.sys.dm_exec_sessions
group by login_name
create clustered index idx_login_name on #proc (lname)

update #proc set
pname = pname + isnull(ss.program_name, '')
from master.sys.dm_exec_sessions ss
where lname = ss.login_name and ss.program_name is not null

select * from #proc
drop table #proc

select login_name, program_name
FROM master.sys.dm_exec_sessions
group by login_name, program_name

для спящего время бодрствования равносильно сну
31 авг 09, 16:35    [7599103]     Ответить | Цитировать Сообщить модератору
 Re: обновление полей одним UPDATE  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
я не проверял но по моему вот это
update #proc set
pname = pname + isnull(ss.program_name, '')
from master.sys.dm_exec_sessions ss
where lname = ss.login_name
должно как-то так писаться
update p set
pname = pname + isnull(ss.program_name, '')
from #proc p
join master.sys.dm_exec_sessions ss on p.lname = ss.login_name
по крайней мере я так обычно пишу
31 авг 09, 16:36    [7599105]     Ответить | Цитировать Сообщить модератору
 Re: обновление полей одним UPDATE  [new]
vizier
Member

Откуда:
Сообщений: 181
Гы. Я тоже так думал... Ни одно предложение не работает...
31 авг 09, 16:38    [7599118]     Ответить | Цитировать Сообщить модератору
 Re: обновление полей одним UPDATE  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36808
https://www.sql.ru/faq/faq_topic.aspx?fid=130
31 авг 09, 16:39    [7599120]     Ответить | Цитировать Сообщить модератору
 Re: обновление полей одним UPDATE  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
vizier
Гы. Я тоже так думал... Ни одно предложение не работает...

вы ваще видели что у вас во временной таблице хранится? или типа оно должно работать, потому чтоя так хочу?
31 авг 09, 16:49    [7599191]     Ответить | Цитировать Сообщить модератору
 Re: обновление полей одним UPDATE  [new]
vizier
Member

Откуда:
Сообщений: 181
Видел :-)
список юзеров, которые работают на сервере
31 авг 09, 16:53    [7599218]     Ответить | Цитировать Сообщить модератору
 Re: обновление полей одним UPDATE  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
а вы в курсе что возвращает select * FROM master.sys.dm_exec_sessions
?

для спящего время бодрствования равносильно сну
31 авг 09, 16:54    [7599232]     Ответить | Цитировать Сообщить модератору
 Re: обновление полей одним UPDATE  [new]
vizier
Member

Откуда:
Сообщений: 181
и что ж я там не заметил?
31 авг 09, 16:59    [7599261]     Ответить | Цитировать Сообщить модератору
 Re: обновление полей одним UPDATE  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Что-то я не пойму, а зачем тут городушки со временной таблицей?!
31 авг 09, 17:01    [7599279]     Ответить | Цитировать Сообщить модератору
 Re: обновление полей одним UPDATE  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
а зачем вы используете
group by login_name
?

для спящего время бодрствования равносильно сну
31 авг 09, 17:02    [7599287]     Ответить | Цитировать Сообщить модератору
 Re: обновление полей одним UPDATE  [new]
vizier
Member

Откуда:
Сообщений: 181
а как надо?
31 авг 09, 17:06    [7599326]     Ответить | Цитировать Сообщить модератору
 Re: обновление полей одним UPDATE  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
vizier
а как надо?


Может Вы потрудитесь огласить задачу, а не придуманный Вами способ ее решения?
31 авг 09, 17:07    [7599339]     Ответить | Цитировать Сообщить модератору
 Re: обновление полей одним UPDATE  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
смотря что вы хотите получить

для спящего время бодрствования равносильно сну
31 авг 09, 17:07    [7599340]     Ответить | Цитировать Сообщить модератору
 Re: обновление полей одним UPDATE  [new]
vizier
Member

Откуда:
Сообщений: 181
ОК.
определить юзеров и запущенные ими приложения:
На выходе должна получиться такая табличка
Вася | SQLAgent - Generic Refresher,Microsoft SQL Server Management Studio
Петя | Microsoft SQL Server Management Studio
Ваня | Microsoft SQL Server Management Studio, Его крутая программа

:-)
31 авг 09, 17:11    [7599376]     Ответить | Цитировать Сообщить модератору
 Re: обновление полей одним UPDATE  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Тогда Вам по ссылке Гавриленко Сергея Алексеевича.

ЗЫ. Тока вот убей не пойму. Так же неудобно информацию воспринимать. А еще не дай бог отфильтровать по "программе" придется где-нить на клиенте.
31 авг 09, 17:19    [7599455]     Ответить | Цитировать Сообщить модератору
 Re: обновление полей одним UPDATE  [new]
vizier
Member

Откуда:
Сообщений: 181
что то в этом роде
declare @i int, @max int
create table #proc (lname varchar(512), pname varchar(8000))
create table #cursor (idx int identity(0,1), clogin varchar(512), cname varchar(8000))
insert into #proc (lname, pname)
select login_name, ''
FROM master.sys.dm_exec_sessions
group by login_name
create clustered index idx_login_name on #proc (lname)

insert into #cursor (clogin, cname)
select login_name, program_name
FROM master.sys.dm_exec_sessions
group by login_name, program_name

select @max = max(idx) from #cursor 
set @i = 1
while @i <= @max
begin
update #proc set 
pname = pname + ', ' + cname
from #cursor c inner join #proc p on p.lname = c.clogin
where idx = @i
set @i = @i + 1
end

select * from #proc
drop table #proc
drop table #cursor

31 авг 09, 17:37    [7599612]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить