Using a SQL Script to list all the permissions, I went and created users for each case.
EXECUTE AS USER = 'test_user'
FROM fn_my_permissions(null, 'DATABASE')
ORDER BY subentity_name, permission_name
I then compared the results, and came to the following list, with documentation from primarily msdn (any quotes not specifically referenced are from the msdn link).
Below is some of the documentation I used to inform the people who would be losing dbo permissions what exactly they were losing.
Confers the ability to change the properties, except ownership, of a
particular securable. When granted on a scope, ALTER also bestows the
ability to alter, create, or drop any securable that is contained
within that scope. For example, ALTER permission on a schema includes
the ability to create, alter, and drop objects from the schema.
ALTER ANY APPLICATION ROLE
ALTER ANY DATABASE AUDIT
ALTER ANY ROLE
ALTER ANY USER
Confers the ability to CREATE, ALTER, or DROP individual instances of
the Database Securable. For example, ALTER ANY SCHEMA confers the
ability to create, alter, or drop any schema in the database.
Application roles are database principals that enable an
application to run with its own, user-like permissions.
Auditing an instance of SQL Server or a SQL Server database
involves tracking and logging events that occur on the system. The
Database-Level Audit Specification object belongs to an audit. You can
create one database audit specification per SQL Server database per
Database Roles are used to easily manage the permissions in your
databases, SQL Server provides several roles which are security
principals that group other principals. They are like groups in the
Microsoft Windows operating system. Database-level roles are
database-wide in their permissions scope.
Found in msdn.
AUTHENTICATE & AUTHENTICATE SERVER permissions are only used when
using EXECUTE AS in cross database and server-access (respectively)
Used for database replication permissions.
Confers ownership-like capabilities on the grantee. The grantee
effectively has all defined permissions on the securable. A principal
that has been granted CONTROL can also grant permissions on the
Confers to the grantee the ability to create the Database Securable.
Showplan permissions are used for various Showplan SET statement
options when they are used with Transact-SQL batches.
SUBSCRIBE QUERY NOTIFICATIONS
Documentation about query notifications.
Built upon the Service Broker infrastructure, query notifications
allow applications to be notified when data has changed. This feature
is particularly useful for applications that provide a cache of
information from a database, such as a Web application, and need to be
notified when the source data is changed.
Enables the grantee to take ownership of the securable on which it is
VIEW DATABASE STATE
Used to view Dynamic Management Views and Functions
Documentation on view definition permissions.
The VIEW DEFINITION permission lets a user see the metadata of the
securable on which the permission is granted. However, VIEW DEFINITION
permission does not confer access to the securable itself. For
example, a user that is granted only VIEW DEFINITION permission on a
table can see metadata related to the table in the sys.objects catalog
view. However, without additional permissions such as SELECT or
CONTROL, the user cannot read data from the table.