2009-07-20 17 views
35

He estado tratando de averiguar por qué SQL Server tiene el esquema db_owner y el rol db_owner? Esto es muy confuso He estado buscando respuestas y hasta ahora esto es lo que entiende:Roles, esquemas, usuarios del servidor SQL

  1. Todas las tablas y objetos (como restricciones, etc.) pertenecen a un esquema. DBO siendo el esquema predeterminado.
  2. Un usuario puede tener permiso para editar cada objeto o el esquema. Un permiso en el esquema extiende el permiso a todos los objetos dentro de ese esquema. Por lo tanto, no tiene que otorgar permiso a cada objeto individual.
  3. Permisos de grupos de roles juntos para su conveniencia.

Si algo de esto es incorrecto, hágamelo saber. Pero creo que hasta ahora todo bien. Ahora mis preguntas son:

  1. ¿Qué es exactamente el esquema db_owner como se ve en el cuadro de diálogo "Usuario de la base de datos" de SQL Server Management Studio? Y en el mismo diálogo, define el "Esquema predeterminado" como dbo. ¿Por qué no son los dos lo mismo? Si de forma predeterminada SQL Server usa dbo para crear todos los objetos, ¿para qué sirve db_owner?
  2. ¿Por qué un usuario querría tener un esquema? Ya estás asignando permisos/roles. ¿Qué le ofrece el propietario de db_accessadmin?
  3. ¿Puede dar un ejemplo de cuando crea objetos bajo el esquema db_owner y el esquema db_accessadmin? En otras palabras, ¿alguien usa legítimamente esos esquemas?
+0

De acuerdo. Era ridículo que crearan dos tipos diferentes de objetos (un esquema y un rol) con el mismo nombre. – LarryBud

Respuesta

23

Un esquema de SQL Server es simplemente contenedor de objetos, como tablas, procedimientos almacenados, etc. Una función de base es un grupo de directores, como inicios de sesión de Windows, los usuarios de SQL Server, etc.

El La idea es que puede tener un rol de decir "TI" y tener todos los usuarios de TI bajo ese rol. Entonces puede tener un esquema llamado "IT" y tener todas las tablas que pertenecen a IT debajo de eso. Fuera de la caja, SQL Server crea esquemas coincidentes para cada usuario y función predeterminados en la base de datos, pero creo que la intención es personalizar esto para que coincida con las necesidades de su organización.

This article tiene más información sobre las diferencias entre propietarios y esquemas. This question en Stack Overflow también puede ser útil.

+0

El artículo es bastante útil. Por lo tanto, de su respuesta tomo que el esquema db_accessadmin es inútil y es un efecto secundario del rol db_accessadmin. Nadie crea tablas bajo el esquema db_accessadmin, sino que utiliza un esquema más relevante para sus datos. ¿Hay una lista de lo que le otorga la "propiedad" de un objeto/esquema? ¿Son todos los derechos imaginables para ese objeto? ¿O podrías ser un propietario sin derechos de lectura? – Budric

+0

Consulte este artículo http://msdn.microsoft.com/en-us/library/ms189462.aspx para obtener más detalles. Específicamente, "Los objetos creados dentro de un esquema son propiedad del propietario del esquema y tienen un NULL principal_id en sys.objects. La propiedad de los objetos que contienen el esquema se puede transferir a cualquier principal a nivel de base de datos, pero el propietario del esquema siempre conserva el CONTROL permiso sobre los objetos dentro del esquema ". Por lo tanto, parece que un propietario siempre tiene control total sobre los objetos en un esquema. – tbreffni

0

Estoy citando el siguiente en el siguiente enlace.

https://msdn.microsoft.com/en-us/library/bb669061(v=vs.110).aspx

barcos de SQL Server con diez esquemas predefinidos que tienen los mismos nombres que el incorporado en la base de datos de usuarios y roles. Estos existen principalmente por compatibilidad con versiones anteriores. Puede soltar los esquemas que tienen los mismos nombres que los roles de base de datos fijos si no los necesita.No se puede dejar caer los siguientes esquemas:

  • dbo
  • guest
  • sys
  • INFORMATION_SCHEMA
Cuestiones relacionadas