¿Por qué usar master para crear una base de datos?


12

Tengo una pregunta breve, ¿por qué utilizo use master;para crear una base de datos? Aquí está el ejemplo de la documentación de Microsoft.

USE master ;
GO
CREATE DATABASE Sales
ON
( NAME = Sales_dat,
    FILENAME = 'C:\Program Files\...\saledat.mdf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 )
LOG ON
( NAME = Sales_log,  
    FILENAME = 'C:\Program Files\...\salelog.ldf',
    SIZE = 5MB,
    MAXSIZE = 25MB,
    FILEGROWTH = 5MB ) ;

Respuestas:


22

No es absolutamente un requisito en este caso muy específico, pero es un requisito en muchos otros escenarios. Si está creando una base de datos llamada Salesy tiene una base de datos llamada Sales, deberá cambiar el contexto de su base de datos antes de:

  • Restaurar con reemplazar; o,
  • Descarte la base de datos actual y luego:
    • Crea desde cero; o,
    • Crear para adjuntar.

Hay muchos otros escenarios fuera de la creación de la base de datos que también requieren (a) no estar en el contexto de la base de datos actual, o (b) estar en el contexto masterespecífico (o al menos no una base de datos específica ), y muchos de Estas cosas puede estar haciendo durante o alrededor de la creación de bases de datos:

  • Establecer una base de datos en un estado diferente, como single_user
  • Prevención de errores cuando un script tiene un USEcomando pero esa base de datos de usuarios puede estar fuera de línea o inaccesible
  • Conceder permisos a nivel de servidor como CREATE DATABASE
  • Conceder membresía de rol a nivel de servidor
  • Marcar un módulo como un objeto del sistema ( sp_MS_marksystemobject) o como un procedimiento de inicio
  • Ciertos tipos de operaciones de certificado, auditoría de servidor y grupo de disponibilidad

Probablemente un montón de otras cosas. USE master;No siempre es necesario, pero a veces lo es, y no duele para ejecutar siempre comandos de nivel de servidor de base de datos.


17

Creo que no es un requisito que debas usar la masterbase de datos para crear una base de datos. Dado que el comando crear base de datos debe ejecutarse en un contexto de base de datos, la documentación siempre usa una base de datos predeterminada que es mastery es una base de datos del sistema que siempre estará allí sin importar qué, ¡para que el script no falle!


4

Creo que nosotros, hace mucho, mucho tiempo, teníamos que estar en master al ejecutar el comando CREATE DATABASE. Soy demasiado vago para encender una versión de 20 años para verificar. Probablemente sea una combinación de eso y que "se sienta natural" estar en el maestro. Al igual que si va a crear una carpeta (imagine que solo hay un nivel de carpetas), probablemente se sienta "mejor" al decir CD \ primero (comparando la raíz aquí con la base de datos maestra).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.