Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Temp tables: хочется странного  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Хочу сделать что-то типа кэша в таблице, но чтобы не заморачиваться с зачисткой подумал, что неплохо было бы разместить ее в tempdb.

Можно ли создать в tempdb таблицу типа глобальной ##, но чтобы она была как ильич, всегда живой, и удалялась только при рестарте сервера?
26 июн 15, 10:30    [17818753]     Ответить | Цитировать Сообщить модератору
 Re: Temp tables: хочется странного  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
а!


use tempdb;
go
create table tutu (x int);
go
26 июн 15, 10:31    [17818762]     Ответить | Цитировать Сообщить модератору
 Re: Temp tables: хочется странного  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Но вопрос остается: как быть с правами для юзеров рабочей базы?
Например, чтобы всем был доступ?
26 июн 15, 10:37    [17818805]     Ответить | Цитировать Сообщить модератору
 Re: Temp tables: хочется странного  [new]
_djХомяГ
Guest
Например дать гранты для public на таблицу
26 июн 15, 10:40    [17818829]     Ответить | Цитировать Сообщить модератору
 Re: Temp tables: хочется странного  [new]
invm
Member

Откуда: Москва
Сообщений: 9825
Winnipuh
Например, чтобы всем был доступ?
grant select on tutu to public;
26 июн 15, 10:41    [17818835]     Ответить | Цитировать Сообщить модератору
 Re: Temp tables: хочется странного  [new]
komrad
Member

Откуда:
Сообщений: 5735
Winnipuh
Хочу сделать что-то типа кэша в таблице, но чтобы не заморачиваться с зачисткой подумал, что неплохо было бы разместить ее в tempdb.

Можно ли создать в tempdb таблицу типа глобальной ##, но чтобы она была как ильич, всегда живой, и удалялась только при рестарте сервера?


можно её (постоянную таблицу) в базе model создать
правда удаляться из tempdb она не будет, но после рестарта будет пустой
26 июн 15, 10:49    [17818878]     Ответить | Цитировать Сообщить модератору
 Re: Temp tables: хочется странного  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4893
Winnipuh
чтобы она была как ильич, всегда живой, и удалялась только при рестарте сервера?


Для данной задачи, как никогда, подходит

SQL 2014 -- InMemory -- SCHEMA_ONLY
26 июн 15, 10:51    [17818904]     Ответить | Цитировать Сообщить модератору
 Re: Temp tables: хочется странного  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
a_voronin
Winnipuh
чтобы она была как ильич, всегда живой, и удалялась только при рестарте сервера?


Для данной задачи, как никогда, подходит

SQL 2014 -- InMemory -- SCHEMA_ONLY


да, но в моем случае надо быть совместимым с >=2008.
26 июн 15, 10:56    [17818948]     Ответить | Цитировать Сообщить модератору
 Re: Temp tables: хочется странного  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
komrad
Winnipuh
Хочу сделать что-то типа кэша в таблице, но чтобы не заморачиваться с зачисткой подумал, что неплохо было бы разместить ее в tempdb.

Можно ли создать в tempdb таблицу типа глобальной ##, но чтобы она была как ильич, всегда живой, и удалялась только при рестарте сервера?


можно её (постоянную таблицу) в базе model создать
правда удаляться из tempdb она не будет, но после рестарта будет пустой


Тоже вариант, но тут такое: для больших баз админы размещают темпдб на отдельных дисках, быстрых, как олень, то с model как быть?
26 июн 15, 10:58    [17818973]     Ответить | Цитировать Сообщить модератору
 Re: Temp tables: хочется странного  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Winnipuh
komrad
пропущено...


можно её (постоянную таблицу) в базе model создать
правда удаляться из tempdb она не будет, но после рестарта будет пустой


Тоже вариант, но тут такое: для больших баз админы размещают темпдб на отдельных дисках, быстрых, как олень, то с model как быть?
При рестарте база tempdb создаётся из базы model,
которая лишь служит прототипом для вновь создаваемых баз.
Дальше работаете с tempdb.
26 июн 15, 11:02    [17819024]     Ответить | Цитировать Сообщить модератору
 Re: Temp tables: хочется странного  [new]
o-o
Guest
Winnipuh
Тоже вариант, но тут такое: для больших баз админы размещают темпдб на отдельных дисках, быстрых, как олень, то с model как быть?

так и советуют разместить в моделе, чтобы в *темпдб* создавалась каждый раз.
правда, заодно и во всех новых базах будет создаваться
26 июн 15, 11:06    [17819066]     Ответить | Цитировать Сообщить модератору
 Re: Temp tables: хочется странного  [new]
komrad
Member

Откуда:
Сообщений: 5735
[quot o-o]
Winnipuh
правда, заодно и во всех новых базах будет создаваться

тогда еще варианты:
1) startup proc - создавать таблицу при старте сервера (sp_procoption)
2) SQL Agent Job с расписанием "Start Automatically when SQL Server Agent starts"
26 июн 15, 11:12    [17819111]     Ответить | Цитировать Сообщить модератору
 Re: Temp tables: хочется странного  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
o-o
Winnipuh
Тоже вариант, но тут такое: для больших баз админы размещают темпдб на отдельных дисках, быстрых, как олень, то с model как быть?

так и советуют разместить в моделе, чтобы в *темпдб* создавалась каждый раз.
правда, заодно и во всех новых базах будет создаваться


йез, именно такой вопрос был следующим: где и как создавать.
26 июн 15, 11:39    [17819304]     Ответить | Цитировать Сообщить модератору
 Re: Temp tables: хочется странного  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
[quot komrad]
o-o
пропущено...

тогда еще варианты:
1) startup proc - создавать таблицу при старте сервера (sp_procoption)
2) SQL Agent Job с расписанием "Start Automatically when SQL Server Agent starts"


может быть express
26 июн 15, 11:39    [17819307]     Ответить | Цитировать Сообщить модератору
 Re: Temp tables: хочется странного  [new]
komrad
Member

Откуда:
Сообщений: 5735
Winnipuh
komrad
пропущено...


может быть express


тогда п.2 отпадает и остается
1) создание в модели (таблица будет создаваться и в каждой новой пользовательской БД)
2) процедура в мастере с опцией startup (в процедурe создаете нужный объект в tempdb)
26 июн 15, 11:43    [17819351]     Ответить | Цитировать Сообщить модератору
 Re: Temp tables: хочется странного  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
komrad
Winnipuh
пропущено...


тогда п.2 отпадает и остается
1) создание в модели (таблица будет создаваться и в каждой новой пользовательской БД)
2) процедура в мастере с опцией startup (в процедурe создаете нужный объект в tempdb)


3) В процедуре, которая пишет, динамически?

if (object_id('tempdb.[dbo].[search_cache]') IS NULL)
EXEC(
N'
USE TEMPDB;

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].[search_cache]'') AND type in (N''U''))
BEGIN
CREATE TABLE [dbo].[search_cache]
(
cachekey nvarchar(1024),
result nvarchar(MAX)
)
END')
26 июн 15, 11:51    [17819405]     Ответить | Цитировать Сообщить модератору
 Re: Temp tables: хочется странного  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Winnipuh,

а зачем проверять наличие базы внутри EXEC(), если проверка уже была только что до этого?
26 июн 15, 11:55    [17819434]     Ответить | Цитировать Сообщить модератору
 Re: Temp tables: хочется странного  [new]
komrad
Member

Откуда:
Сообщений: 5735
Winnipuh
3) В процедуре, которая пишет, динамически?


не понял сути вопроса

про указанный код: зачем проверять наличие объекта дважды и использовать dynamic sql?
26 июн 15, 11:55    [17819441]     Ответить | Цитировать Сообщить модератору
 Re: Temp tables: хочется странного  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
iap
Winnipuh,

а зачем проверять наличие базы внутри EXEC(), если проверка уже была только что до этого?


+
перебор ;-)
26 июн 15, 11:57    [17819448]     Ответить | Цитировать Сообщить модератору
 Re: Temp tables: хочется странного  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Создаю таблицу через exec,
но как триггер к ней создать в скрипте?

Типа такого, к примеру, но create trigger должен быть первым, а надо переключитсья в tempdb:

			EXEC(
			N'
			--USE TEMPDB;
				CREATE TRIGGER [dbo].[tmp_search_cache] on [tempdb].[dbo].[search_cache]
				for insert, update
				as
				BEGIN
				declare @total int=0
					select @total = count(*) from dbp.search_cachewith(nolock) where expired_secs<0
					if(@total>0)
					BEGIN
						delete top(100) from dbp.search_cache where expired_secs<0
					END
				END
			')
26 июн 15, 14:19    [17820352]     Ответить | Цитировать Сообщить модератору
 Re: Temp tables: хочется странного  [new]
Glory
Member

Откуда:
Сообщений: 104751
Использовать два exec() ?
26 июн 15, 14:22    [17820376]     Ответить | Цитировать Сообщить модератору
 Re: Temp tables: хочется странного  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Glory
Использовать два exec() ?


торможу... как, например?
26 июн 15, 14:26    [17820407]     Ответить | Цитировать Сообщить модератору
 Re: Temp tables: хочется странного  [new]
Glory
Member

Откуда:
Сообщений: 104751
Winnipuh
Glory
Использовать два exec() ?


торможу... как, например?

exec('')
exec('')
26 июн 15, 14:26    [17820413]     Ответить | Цитировать Сообщить модератору
 Re: Temp tables: хочется странного  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
EXEC(N'USE tempdb; EXEC(N''CREATE TRIGGER...'')');
26 июн 15, 14:29    [17820425]     Ответить | Цитировать Сообщить модератору
 Re: Temp tables: хочется странного  [new]
Glory
Member

Откуда:
Сообщений: 104751
И как бы между прочим
exec tempdb..sp_executesql N'select db_name()'
26 июн 15, 14:30    [17820443]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить