Это абсолютно не требование в этом очень конкретном случае, но это требование во многих других сценариях. Если вы создаете базу данных с именем Sales
, и у вас действительно есть база данных с именем Sales
, вам нужно изменить контекст базы данных перед вами:
- Восстановить с заменой; или,
- Удалите текущую базу данных и затем:
- Создавать с нуля; или,
- Создать для прикрепления.
Существует множество других сценариев вне создания базы данных, которые также требуют либо (а) не быть в контексте текущей базы данных, либо (б) быть в контексте master
конкретно (или, по крайней мере, не конкретной базы данных), и многих из эти вещи вы можете делать во время или вокруг создания баз данных:
- Установка базы данных в другое состояние, например
single_user
- Предотвращение ошибок, когда в скрипте есть
USE
команда, но эта пользовательская база данных может быть отключена или недоступна иным образом
- Предоставление разрешений на уровне сервера, таких как
CREATE DATABASE
- Предоставление членства в роли на уровне сервера
- Пометка модуля как системного объекта (
sp_MS_marksystemobject
) или процедуры запуска
- Некоторые типы сертификатов, аудит сервера и операции группы доступности
Вероятно, множество других вещей. USE master;
не всегда необходимо, но иногда это так, и не мешает всегда выполнять команды уровня сервера из этой базы данных.