|
Проверка существования временной таблицы?
|
|||
---|---|---|---|
#18+
Народ, как выполнить проверку существования временной таблицы под пользователем у которого нет прав ни на что кроме как на запуск процедур? Такой вариант не катит.. if exists (select * from tempdb.dbo.sysobjects where name='##lots' ) drop table ##lots ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2003, 11:37 |
|
Проверка существования временной таблицы?
|
|||
---|---|---|---|
#18+
Такой вариант не катит.. И почему же ? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2003, 11:44 |
|
Проверка существования временной таблицы?
|
|||
---|---|---|---|
#18+
Видимо правов к другой БД нету.. Потому что в текущей БД из хранимой процедуры доступ есть к чему угодно.. Конечно можно дать на read доступ к tempdb.. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2003, 11:49 |
|
Проверка существования временной таблицы?
|
|||
---|---|---|---|
#18+
Не уверен что будет если у пользователя ни на что нет прав, но можно попробовать: if (not object_id('tempdb..##lots') IS NULL) drop table ##lots ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2003, 11:54 |
|
Проверка существования временной таблицы?
|
|||
---|---|---|---|
#18+
andsm Спасибо! Заработало -)) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2003, 11:56 |
|
Проверка существования временной таблицы?
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2.
В этом куске вы смотрите в системые таблицы, а там написано реальное имя временной таблицы что то вроде '##lots_________________________3453', лучше воспользоваться функцией, пример Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2003, 11:57 |
|
Проверка существования временной таблицы?
|
|||
---|---|---|---|
#18+
С правами Ден действительно что-то путает. tempdb - это глобальный ресурс. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2003, 11:59 |
|
Проверка существования временной таблицы?
|
|||
---|---|---|---|
#18+
Это под административными правами работает (а куда оно денется? -0)) ) А как под юзерскими правами начал... if exists (select * from tempdb.dbo.sysobjects where name='##lots' ) drop table ##lots ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2003, 12:00 |
|
Проверка существования временной таблицы?
|
|||
---|---|---|---|
#18+
Для Glory, ну с прав по умолчанию у юзера вообще нету, как создается объект, даются права на его запуск... Я думал, что код внутри процедуры запускается с административными правми, но это блин не так... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2003, 12:03 |
|
Проверка существования временной таблицы?
|
|||
---|---|---|---|
#18+
код внутри процедуры исполняется с правами создателя процедуры. Тут проблема не с правами была. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2003, 12:06 |
|
Проверка существования временной таблицы?
|
|||
---|---|---|---|
#18+
для fima. А с какими? от DBO или текащего пользователя(допустим sa). Просто если бы исполняля код с правами создателя процедуры, то проблем доступа к tempdb.sysobjects не должно было быть... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2003, 12:15 |
|
Проверка существования временной таблицы?
|
|||
---|---|---|---|
#18+
Насколько я понял, проблема была не с доступом а с тем, что в tempdb..sysobjects название временной таблицы хранится в формате: название таблицы + сколько-то символов '_' + SessionID ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2003, 12:34 |
|
Проверка существования временной таблицы?
|
|||
---|---|---|---|
#18+
Именно с доступом, я начал тестировать базу с пользовательскими правами и всплыло, что ни к каким объектам из других баз из хранимых процедур я доступа не имею.. xp_send_mail, xp_cmdshell ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2003, 12:41 |
|
Проверка существования временной таблицы?
|
|||
---|---|---|---|
#18+
Именно с доступом, я начал тестировать базу с пользовательскими правами и всплыло, что ни к каким объектам из других баз из хранимых процедур я доступа не имею.. xp_send_mail, xp_cmdshell ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2003, 13:18 |
|
Проверка существования временной таблицы?
|
|||
---|---|---|---|
#18+
2 Ден Давайте не будем равнять базы tempdb и master. В tempdb всегда существует пользователь guest, через которого любой логин сервера - получает доступ к базе tempdb - получает доступ к таблице sysobjects с правами SELECT Вы конечно можете "поиграться" с правами guest или конкретного логина, но жить эти изменения будут до следующего рестарта сервера, т.к. при каждом рестарте tempdb создается заново ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2003, 13:37 |
|
Проверка существования временной таблицы?
|
|||
---|---|---|---|
#18+
А мне вообще непонятна проверка на существование временной таблицы. Из кода процедуры разве не видно, что она существует? Или процедура ХХХ метров в длину и автору лень по коду проширнуться и найти, что у него по логике выполнения создавалась эта таблица? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2003, 13:39 |
|
Проверка существования временной таблицы?
|
|||
---|---|---|---|
#18+
Всем спасибо! Вся проблема была в том, что базы системные базы и моя созданы разными пользователями, сменил владельца и все заработало.. Во как.. Для Glory - у меня у public права на все убиты... Нет никого, только группа обладающая правом на запуск хранимых процедур.. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2003, 13:53 |
|
Проверка существования временной таблицы?
|
|||
---|---|---|---|
#18+
aka necroposter Ответов на заданный вопрос не нашел вообще. Все это не работает если кильнуть процесс. Вот мое решение: create or alter function [dbo].[check_procedure_run] ( @proc_name varchar(255) ) returns int as begin declare @r int = 0 select top(1) @r = d.session_id --, b.event_info from sys.dm_exec_requests d cross apply sys.dm_exec_input_buffer (d.session_id, 0) b where b.event_info like '%' + @proc_name + '%' and d.session_id <> @@SPID; return @r; end; ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 08:55 |
|
Проверка существования временной таблицы?
|
|||
---|---|---|---|
#18+
haliff, ТС непонятно зачем полез в системные таблицы, для определения существования объекта можно использовать функцию object_id(). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 10:16 |
|
Проверка существования временной таблицы?
|
|||
---|---|---|---|
#18+
Стареем что ли? Раньше ТСа порвали бы на клочки за использование глобальных временных таблиц Даже интересно, что это за задача такая, что требовала именно такого решения. Что касается сабжа, то выше уже всё сказали про функцию object_id. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 11:00 |
|
|
start [/forum/topic.php?fid=46&msg=32095095&tid=1684633]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 299ms |
total: | 442ms |
0 / 0 |