I used to learn about SQL, especially MySQL. Then now my job requires me to understand Microsoft SQL Server (mssql). So I make these notes to guide me and others who want to transition to mssql. I usually summarized what I found and understood so far from browsing the internet.
My takeaways:
-
dbo
stands for DataBase Owner. -
We can't remove privileges from an object owner and we can't drop users from a database if they own objects in it.
-
schema
is a named container for database objects, which allows us to group objects into separate namespaces. Theschema
is the database object that owns the table. For example, the AdventureWorks sample database contains schemas for Production, Sales, and HumanResources.
-
The four-part naming syntax for referring to objects specifies the schema name.
Server.Database.DatabaseSchema.DatabaseObject
-
Schemas can be owned by any database principal and a single principal can own multiple schemas. Principals are entities that can request SQL Server resources.
-
Schemas that contain objects cannot be dropped. The following schemas cannot be dropped:
dbo
,guest
,sys
,INFORMATION_SCHEMA
. -
The
sys
andINFORMATION_SCHEMA
schemas are reserved for system objects. We cannot create objects in these schemas and we cannot drop them. -
The
dbo
schema is the default schema of every database for all users. By default, users created with theCREATE USER
Transact-SQL command havedbo
as their default schema. Thedbo
schema is owned by thedbo
user account.
-
For example, the name of a table called orders owned by
dbo
isdbo.orders
. If the table’s ownership is transferred to userabc
, the table will now be namedabc.orders
. -
Users who are assigned the
dbo
as default schema don't inherit the permissions of thedbo
user account. No permissions are inherited from a schema by users; schema permissions are inherited by the database objects contained in the schema. -
the
dbo
user account is not the same as thedb_owner
fixed database role and thedb_owner
fixed database role is not the same as the user account that is recorded as the owner of the database. -
The default schema for a user is solely used for object-reference in case the user omits the schema when querying objects. Users in the database will be able to access any object owned by
dbo
without specifying the owner as long as the user has appropriate permission.
原文:https://dev.to/ranggakd/what-is-dbo-in-sql-server-396k