Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проверка существования временной таблицы? / 21 сообщений из 21, страница 1 из 1
23.01.2003, 11:37
    #32095073
Ден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка существования временной таблицы?
Народ, как выполнить проверку существования временной таблицы под пользователем у которого нет прав ни на что кроме как на запуск процедур?
Такой вариант не катит..

if exists (select * from tempdb.dbo.sysobjects
where name='##lots' )
drop table ##lots
...
Рейтинг: 0 / 0
23.01.2003, 11:44
    #32095084
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка существования временной таблицы?
Такой вариант не катит..

И почему же ?
...
Рейтинг: 0 / 0
23.01.2003, 11:49
    #32095095
Ден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка существования временной таблицы?
Видимо правов к другой БД нету.. Потому что в текущей БД из хранимой процедуры доступ есть к чему угодно.. Конечно можно дать на read доступ к tempdb..
...
Рейтинг: 0 / 0
23.01.2003, 11:54
    #32095102
andsm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка существования временной таблицы?
Не уверен что будет если у пользователя ни на что нет прав, но можно попробовать:
if (not object_id('tempdb..##lots') IS NULL)
drop table ##lots
...
Рейтинг: 0 / 0
23.01.2003, 11:56
    #32095105
Ден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка существования временной таблицы?
andsm Спасибо! Заработало -))
...
Рейтинг: 0 / 0
23.01.2003, 11:57
    #32095106
fima
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка существования временной таблицы?
Код: plaintext
1.
2.
if exists (select * from tempdb.dbo.sysobjects 
where name='##lots' ) 
drop table ##lots

В этом куске вы смотрите в системые таблицы, а там написано реальное имя временной таблицы что то вроде '##lots_________________________3453', лучше воспользоваться функцией, пример
Код: plaintext
1.
2.
3.
4.
create table #test
(
	test int
)
select OBJECT_ID ('tempdb..#test')
...
Рейтинг: 0 / 0
23.01.2003, 11:59
    #32095110
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка существования временной таблицы?
С правами Ден действительно что-то путает. tempdb - это глобальный ресурс.
...
Рейтинг: 0 / 0
23.01.2003, 12:00
    #32095113
Ден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка существования временной таблицы?
Это под административными правами работает (а куда оно денется? -0)) ) А как под юзерскими правами начал...
if exists (select * from tempdb.dbo.sysobjects
where name='##lots' )
drop table ##lots
...
Рейтинг: 0 / 0
23.01.2003, 12:03
    #32095116
Ден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка существования временной таблицы?
Для Glory, ну с прав по умолчанию у юзера вообще нету, как создается объект, даются права на его запуск... Я думал, что код внутри процедуры запускается с административными правми, но это блин не так...
...
Рейтинг: 0 / 0
23.01.2003, 12:06
    #32095122
fima
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка существования временной таблицы?
код внутри процедуры исполняется с правами создателя процедуры. Тут проблема не с правами была.
...
Рейтинг: 0 / 0
23.01.2003, 12:15
    #32095129
Ден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка существования временной таблицы?
для fima. А с какими? от DBO или текащего пользователя(допустим sa). Просто если бы исполняля код с правами создателя процедуры, то проблем доступа к tempdb.sysobjects не должно было быть...
...
Рейтинг: 0 / 0
23.01.2003, 12:34
    #32095145
andsm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка существования временной таблицы?
Насколько я понял, проблема была не с доступом а с тем, что в tempdb..sysobjects название временной таблицы хранится в формате:
название таблицы + сколько-то символов '_' + SessionID
...
Рейтинг: 0 / 0
23.01.2003, 12:41
    #32095156
Ден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка существования временной таблицы?
Именно с доступом, я начал тестировать базу с пользовательскими правами и всплыло, что ни к каким объектам из других баз из хранимых процедур я доступа не имею.. xp_send_mail, xp_cmdshell
...
Рейтинг: 0 / 0
23.01.2003, 13:18
    #32095188
Ден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка существования временной таблицы?
Именно с доступом, я начал тестировать базу с пользовательскими правами и всплыло, что ни к каким объектам из других баз из хранимых процедур я доступа не имею.. xp_send_mail, xp_cmdshell
...
Рейтинг: 0 / 0
23.01.2003, 13:37
    #32095200
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка существования временной таблицы?
2 Ден
Давайте не будем равнять базы tempdb и master.

В tempdb всегда существует пользователь guest, через которого любой логин сервера
- получает доступ к базе tempdb
- получает доступ к таблице sysobjects с правами SELECT

Вы конечно можете "поиграться" с правами guest или конкретного логина, но жить эти изменения будут до следующего рестарта сервера, т.к. при каждом рестарте tempdb создается заново
...
Рейтинг: 0 / 0
23.01.2003, 13:39
    #32095202
tpg
tpg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка существования временной таблицы?
А мне вообще непонятна проверка на существование временной таблицы. Из кода процедуры разве не видно, что она существует? Или процедура ХХХ метров в длину и автору лень по коду проширнуться и найти, что у него по логике выполнения создавалась эта таблица?
...
Рейтинг: 0 / 0
23.01.2003, 13:53
    #32095214
Ден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка существования временной таблицы?
Всем спасибо! Вся проблема была в том, что базы системные базы и моя созданы разными пользователями, сменил владельца и все заработало.. Во как..
Для Glory - у меня у public права на все убиты... Нет никого, только группа обладающая правом на запуск хранимых процедур..
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
27.05.2021, 08:55
    #40073406
haliff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка существования временной таблицы?
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;
...
Рейтинг: 0 / 0
27.05.2021, 10:16
    #40073429
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка существования временной таблицы?
haliff,

ТС непонятно зачем полез в системные таблицы, для определения существования объекта можно использовать функцию object_id().
...
Рейтинг: 0 / 0
27.05.2021, 11:00
    #40073446
Кесарь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка существования временной таблицы?
Стареем что ли? Раньше ТСа порвали бы на клочки за использование глобальных временных таблиц

Даже интересно, что это за задача такая, что требовала именно такого решения.


Что касается сабжа, то выше уже всё сказали про функцию object_id.
...
Рейтинг: 0 / 0
06.06.2021, 16:53
    #40075938
haliff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка существования временной таблицы?
Я решал немного другую задачу. Отследить - выполняется процедура или нет.
Да, ошибся, просто перекликалась.
Кстати про старость - решение-то подкинете моей задачи?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проверка существования временной таблицы? / 21 сообщений из 21, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]