Cómo autorizar varias bibliotecas en una declaración de autorizaciónGRANT crea proyectos en el sistema de seguridad que permiten a los usuarios de la base de datos actual procesar datos en la base de datos actual o ejecutar declaraciones Transact-SQL específicas. Permisos de declaración de sintaxis: otorgar {todos | declaración [,...n]} a la cuenta de seguridad [,...n] Permisos de objeto: otorgar {todos los [privilegios] [,...n] } { [(columna) [,...n])]ON { vista de tabla } | ON { vista de tabla }[(columna[,...n])]| función _ definida } } para la cuenta de seguridad [,...n] [con opción de concesión] [como { grupo | rol }] El parámetro TODO significa otorgar todos los permisos disponibles. Para permisos de declaración, solo los miembros del rol de administrador de sistemas pueden usar TODOS. Para los permisos de objetos, los miembros de las funciones sysadmin y db_owner y los propietarios de objetos de la base de datos pueden usar TODOS. Declaración es la declaración a la que se concede permiso. La lista de declaraciones puede incluir: crear base de datos crear función predeterminada crear procedimiento crear regla crear tabla crear ver copia de seguridad registro de copia de seguridad de la base de datos n marcador de posición indica que este elemento se puede repetir en una lista separada por comas. Especifique una lista de cuentas de seguridad. Security_account es la cuenta de seguridad a la que se aplicarán los permisos. ¿La cuenta de seguridad puede ser Microsoft? ¿Servidor SQL? usuario. Rol de SQL Server. ¿Microsoft Windows NT? usuario. Grupo Windows NT. Al otorgar permisos a un usuario de SQL Server o una cuenta de usuario de Windows NT, la cuenta_seguridad especificada es la única cuenta a la que los permisos pueden afectar. Si otorga permiso a una función de SQL Server o a un grupo de Windows NT, el permiso afecta a todos los usuarios de ese grupo o miembros de esa función en la base de datos actual. Si hay conflictos de permisos entre un grupo o rol y sus miembros, el permiso más restrictivo (denegar) tiene prioridad. Security_account debe existir en la base de datos actual; no se pueden otorgar permisos a usuarios, roles o grupos en otras bases de datos a menos que se creen o otorguen permisos de acceso para el usuario en la base de datos actual. Hay dos cuentas de seguridad especiales disponibles para las declaraciones de subvenciones. Los permisos otorgados al rol público se aplican a todos los usuarios de la base de datos. Los permisos otorgados al usuario invitado pueden ser utilizados por todos los usuarios que no tengan cuentas de usuario en la base de datos. Al otorgar permisos a un grupo local o global de Windows NT, especifique el nombre de dominio o el nombre de la computadora en la que se define el grupo, seguido de una barra invertida y el nombre del grupo. Sin embargo, para otorgar acceso a los grupos locales integrados de Windows NT, especifique BUILTIN en lugar del nombre de dominio o de computadora. Los privilegios son palabras clave opcionales que se pueden incluir en declaraciones compatibles con SQL-92. Actualmente se conceden permisos sobre el objeto. Al otorgar permisos a un objeto en una tabla, función con valores de tabla o vista, la lista de permisos puede incluir uno o más de los siguientes permisos: SELECCIONAR, INSERTAR, ELIMINAR, refinamientos o ACTUALIZAR. Puede proporcionar permisos de selección y actualización para listas de columnas. Si no proporciona permisos SELECCIONAR y ACTUALIZAR a una lista de columnas, estos permisos se aplican a todas las columnas de la tabla, vista o función con valores de tabla. Los permisos de objetos otorgados a procedimientos almacenados solo pueden incluir EXECUTE. Los permisos de objetos otorgados a funciones con valores escalares pueden incluir ejecución y referencia. Para acceder a una columna en una declaración SELECT, necesita permiso SELECT en la columna. Para actualizar una columna con una declaración ACTUALIZAR, necesita el permiso ACTUALIZAR en la columna. Para crear una restricción de clave externa que haga referencia a una tabla, la tabla requiere el permiso REFERENCIAS.
Para crear una función o vista utilizando la cláusula FROM SCHEMABINDING de un objeto al que se hace referencia, necesita el permiso REFERENCES sobre el objeto. Columna es el nombre de la columna de la base de datos actual a la que se conceden permisos. Tabla es el nombre de la tabla en la base de datos actual a la que se otorgan permisos. Vista es el nombre de la vista a la que se otorgan permisos en la base de datos actual. Stored_procedure es el nombre del procedimiento almacenado que otorga permisos en la base de datos actual. Extended_procedure es el nombre del procedimiento almacenado extendido que otorga permisos en la base de datos actual. Función_definida por usuario es el nombre de la función definida por el usuario que otorga permisos en la base de datos actual. CON OPCIÓN DE GRANT significa que cuenta_seguridad puede otorgar los permisos de objeto especificados a otras cuentas de seguridad. La cláusula FROM GRANT OPTION solo es válida para permisos de objetos. Porque {grupo | rol} se refiere al nombre opcional de una cuenta de seguridad en la base de datos actual que tiene autoridad para ejecutar declaraciones GRANT. Se utiliza cuando se otorgan permisos de objetos a un grupo o función, y los permisos de objetos deben otorgarse además a usuarios que no son miembros del grupo o función. Debido a que solo los usuarios (y no los grupos o roles) pueden ejecutar declaraciones GRANT, miembros específicos del grupo o rol otorgan permisos a objetos bajo la autoridad del grupo o rol. Las anotaciones no permiten permisos entre bases de datos; solo a los usuarios de la base de datos actual se les pueden otorgar permisos sobre objetos y declaraciones en la base de datos actual. Si un usuario necesita permisos para un objeto en otra base de datos, cree una cuenta de usuario en esa base de datos o otorgue a la cuenta de usuario acceso tanto a esa base de datos como a la base de datos actual. Tenga en cuenta que el procedimiento almacenado del sistema es una excepción porque se le ha otorgado el permiso EJECUTAR al rol público, lo que permite que cualquiera pueda ejecutarlo. Sin embargo, después de ejecutar el procedimiento almacenado del sistema, se verifica la pertenencia al rol del usuario. Si este usuario no es miembro del servidor fijo apropiado o de las funciones de base de datos necesarias para ejecutar este procedimiento almacenado, el procedimiento almacenado no continuará. La declaración REVOKE se puede utilizar para eliminar permisos concedidos y la declaración DENY se puede utilizar para evitar que un usuario obtenga permisos en su cuenta de usuario mediante una declaración GRANT. Los permisos concedidos eliminan los permisos denegados o revocados en el nivel concedido (usuario, grupo o rol). El mismo permiso que se deniega en otro nivel (como el grupo o rol que contiene al usuario) tiene prioridad. Sin embargo, aunque se siguen aplicando los mismos permisos revocados en otro nivel, esto no impide que el usuario acceda al objeto. Si un usuario activa una función de aplicación, la función de GRANT es nula para cualquier objeto al que acceda el usuario a través de la función de aplicación. Por lo tanto, aunque un usuario puede estar autorizado a acceder a un objeto específico en la base de datos actual, si el usuario utiliza una función de aplicación que no tiene acceso al objeto, no tendrá acceso al objeto durante la activación de la función de aplicación. El procedimiento almacenado del sistema sp_helprotect informa los permisos de los objetos o usuarios de la base de datos. Los permisos concedidos dependen de los permisos de declaración que se conceden y de los objetos involucrados en los permisos. Los miembros del rol de administrador de sistemas pueden otorgar cualquier permiso en cualquier base de datos. Los propietarios de objetos pueden otorgar permisos a los objetos que poseen. Los miembros de los roles db_owner o db_securityadmin pueden otorgar cualquier permiso a cualquier declaración u objeto en su base de datos. Las declaraciones que requieren permiso son aquellas que agregan objetos a la base de datos o realizan actividades administrativas en la base de datos. Cada declaración que requiere permisos tiene un conjunto específico de roles que automáticamente tienen permisos para ejecutar la declaración. Por ejemplo, de forma predeterminada, los miembros de las funciones sysadmin, db_owner y db_ddladmin tienen permisos CREATE TABLE. De forma predeterminada, los roles sysadmin y db_owner y el propietario de la tabla tienen permiso para ejecutar declaraciones SELECT en la tabla. No se puede conceder permiso a algunas instrucciones Transact-SQL; la ejecución de estas instrucciones requiere ser miembro de un rol fijo, que tiene permiso implícito para ejecutar la instrucción especial. Por ejemplo, para ejecutar una instrucción SHUTDOWN, el usuario debe agregarse como miembro de la función serveradmin. Los miembros de las funciones fijas de servidor dbcreator, Processadmin, securityadmin y serveradmin solo tienen permiso para ejecutar las siguientes instrucciones Transact-SQL.