Как tempDB работает?

Необходимо предпочесть модификатор, которые тестируются во время компиляции по модификатору, которые тестируются во время времени выполнения (в этой константе контекста по только для чтения). И необходимо всегда использовать модификаторы, которые поддерживают семантическое, в котором Вы нуждаетесь. Если что-то не предназначено, чтобы быть измененным - защищают его, или кто-то запишет что-то в него (случайно или незнанием).

13
задан peakit 20 October 2009 в 14:52
поделиться

3 ответа

Temp table is stored in tempdb until the connection is dropped (or in the case of a global temp tables when the last connection using it is dropped). You can also (and it is a good practice to do so) manually drop the table when you are finished using it with a drop table statement.

No, others cannot see your temp tables if they are local temp tables (They can see and use global temp tables) Multiple people can run commands which use the same temp table name but they will not be overlapping in a local temp table and so you can have a table named #test and so can 10,000 other users, but each one has its own structure and data.

You don't want to generally look up temp tables in tempdb. It is possible to check for existence, but that is the only time I have ever referenced tempdb directly. Simply use your temp table name. Example below of checking for existence

  IF OBJECT_ID('TempDB.dbo.#DuplicateAssignments') IS NOT NULL 
  BEGIN 
  DROP TABLE #DuplicateAssignments 
  END  

You name temp tables by prefacing the name with # (for local tables the ones you would use 999.9% of the time) and ## for global temp tables, then the rest of the name you want.

18
ответ дан 1 December 2019 в 22:39
поделиться

There's a few MSDN articles that are probably the best source of information on the tempDB database in SQL Server.

tempdb Database

The tempdb system database is a global ресурс, доступный всем пользователи, подключенные к экземпляру SQL Сервер и используется для хранения следующее:

  • Временные пользовательские объекты, которые создаются явным образом, например: global или локальные временные таблицы, временные хранимые процедуры, переменные таблицы или курсоры.
  • Внутренние объекты, которые создаются ядром СУБД SQL Server для например, рабочие столы для хранения промежуточные результаты для катушек или сортировка.
  • Версии строк, которые генерируются транзакциями изменения данных в база данных, которая использует чтение с фиксацией используя изоляцию версий строк или транзакции изоляции моментальных снимков.
  • Версии строк, которые генерируются транзакциями изменения данных для функции, такие как: онлайн-индекс операции, множественный активный результат Устанавливает (MARS) и триггеры AFTER.

Операции в базе данных tempdb минимальны. зарегистрирован. Это позволяет транзакциям be rolled back. tempdb is re-created every time SQL Server is started so that the system always starts with a clean copy of the database. Temporary tables and stored procedures are dropped automatically on disconnect, and no connections are active when the system is shut down. Therefore, there is never anything in tempdb to be saved from one session of SQL Server to another. Backup and restore операции с tempdb запрещены.

Также есть tempdb и создание индекса , это сообщение в блоге вместе с Работа с tempdb в SQL Server 2005 , в котором говорится:

Системная база данных SQL Server, tempdb, претерпела ряд изменений в SQL Server 2005. В SQL Server 2005 добавлены новые возможности использования tempdb и внутренняя оптимизация; Архитектура tempdb в основном не изменилась со времен SQL Server 2000.

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

3
ответ дан 1 December 2019 в 22:39
поделиться
  1. The temporary tables created in TempDB are dropped when the query is completed.

  2. I'm not sure on this (I would have to try it), but I think theoretically ALL tables created in TempDB are visible, although only the user that created the table has permission to access it.

0
ответ дан 1 December 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: