Постоянные таблицы базы данных tempdb в SQL Server

Есть ли варианты использования для постоянных таблиц в базе данных tempdb? Под постоянным я имею в виду не использование # или ##, а создание реальной таблицы в базе данных tempdb. Я знаю, что перезапуск службы sql уничтожит базу данных tempdb, но будет ли эта практика плохой по какой-либо другой причине?

Я спрашиваю, потому что у меня есть один вариант использования для этого, мне нужна временная таблица, но она будет открыта для более чем диапазон соединения SQL.

РЕДАКТИРОВАТЬ: фактические данные в долговременной временной таблице являются сериализованными файлами, а не данными, основанными на сопоставлении или чем-то еще

4 ответа

Решение

Почему бы не создать схему с именем 'temp' (или Staging) в вашей базе данных и создать свои долговременные временные таблицы в этой схеме. например

create schema [temp] 
     authorization [dbo]

create table [temp].[MyTempTable]
(
   Id int,
   [name] varchar(50),
   ... SomeColumns ...
)

Обновление: в ответ на вашу дополнительную информацию, вы можете использовать FILESTREAM? (SQL Server 2008 и выше)

Почему он должен быть точно на базе данных tempdb? почему бы, кроме всех других опубликованных альтернатив, не создать общую БД для хранения этой таблицы?

Идея не подходит по многим причинам, например - если параметры сортировки вашей БД и tempdb (сервера) не совпадают - неявное сравнение строк может завершиться неудачно

Основная причина, по которой я бы предложил другой подход, заключается в том, что база данных tempdb уже является узким местом из-за количества применений, которые SQL Server применяет к ней. Я бы не советовал искать еще одну причину для подключения вещей к базе данных tempdb.

Кроме этого, tempdb так же хорош, как и любое другое место, с дополнительным преимуществом, что после перезапуска службы все, что вы там оставили, будет очищено.

Другие вопросы по тегам