The database owner
is a bit of a throw back to a time before (proper) schema's were introduced in SQL Sever 2005.
Basically a database owner is the default dbo
(database owner) of the database, with the database itself being a database object.
From the SQL Server 2000 docs ...
The dbo
is a user that has implied permissions to perform all
activities in the database.
In earlier versions of SQL Server, when a schema could not "own" a object (or rather it should be stated that all the objects, tables, views, etc. were owned by dbo
and there were no other schemas) it was necessary for a "user" to own it ... it should go without saying why something needs to own the database (or else permissions in general would be rather difficult.)
So, technically in older versions of SQL Server (or upgraded databases) it wasn't the "Foo" table it was the "dbo.Foo" table ... with the dbo
being the owner.
With the advent of SQL Server 2005 you could have schema owned database objects like say you have a schema named "bar" and table named "Foo" ... this becomes bar.Foo
as in ...
SELECT * FROM bar.Foo WHERE etc = 'blah`;
The tricky part comes it with the fact that the user creating the database is automatically set as the owner which leads to issues with employee turn over, etc.
Therefore is it best practice to either change this to the sa
account, or perhaps (in my experience) to a domain account that can be administered by an organization's ops/IT team.
This article gives a break down the difference between the older "owner" way of doing things, and the newer "schema" based ownership system.
To understand the difference between owners and schema, let’s spend
some time reviewing object ownership. When an object is created in SQL
Server 2000 or earlier, the object must have an owner. Most of the
time, the owner is “dbo”, also known as the database owner.