S N*_*ell 12 sql-server t-sql ddl master-system-database
我有一个简短的问题,为什么要使用use master;
创建数据库?这是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 ) ;
Run Code Online (Sandbox Code Playgroud)
Aar*_*and 22
在这种非常特殊的情况下,这绝对不是一项要求,但在许多其他情况下却是一项要求。如果您正在创建一个名为 的数据库Sales
,并且您有一个名为 的数据库Sales
,则需要在执行以下操作之前更改数据库上下文:
除了数据库创建之外,还有许多其他场景也需要 (a) 不在当前数据库的上下文中,或 (b) 在master
特定(或至少不是特定数据库)的上下文中,以及许多在创建数据库期间或前后您可能会做的这些事情:
single_user
USE
命令但该用户数据库可能处于脱机状态或以其他方式无法访问时防止出现错误CREATE DATABASE
sp_MS_marksystemobject
) 或启动程序可能还有很多其他的东西。USE master;
并不总是必要的,但有时是必要的,并且始终从该数据库执行服务器级命令并没有什么坏处。
Bij*_*ose 17
我相信您不应该使用master
数据库来创建数据库。由于 create database 命令应该在数据库上下文中运行,因此文档始终使用默认数据库,master
并且它是一个系统数据库,无论发生什么,它都将始终存在,因此脚本不会失败!