使用Microsoft SQL Server Management Studio时,无论是执行SQL命令(例如CREATE DATABASE XYZ
)还是通过GUI创建全新的数据库,数据库最终都会包含一些默认用户(请参见下图),例如dbo
、当前域用户、guest
、sys
。
这是SQL Server的默认行为吗?是否有任何方法可以控制此行为?(例如,不包括正在使用带有SSMS的计算机的当前域用户;或必须包括某些用户)
另一个奇怪的事情是在用户列表中,可以看到tester222
,这是我很久以前为了测试而创建的,而这个名称在对象资源管理器的“SQL Server Instance\Security\Logins”中已经不存在了,怎么现在又出现在列表中呢?
1条答案
按热度按时间q3qa4bjr1#
感谢@Larnu。
新数据库是基于模型数据库创建的。请参见下面的示例:
Model Database in SQL Server 2017
例如,如果更改此模型数据库中的默认用户列表,则每个新数据库在创建时都将继承该用户列表。
来自微软:
https://learn.microsoft.com/en-us/sql/relational-databases/databases/model-database?view=sql-server-2017
model数据库用作在SQL Server示例上创建的所有数据库的模板。因为每次启动SQL Server时都会创建tempdb,所以model数据库必须始终存在于SQL Server系统上。model数据库的整个内容(包括数据库选项)都将复制到新数据库中。model的某些设置还用于在启动期间创建新的tempdb。因此模型数据库必须始终存在于SQLServer系统上。